Re: [問題]要如何將行列式使用拉普拉斯展開?

作者: candy88257 (阿泰斯)   2012-12-21 14:42:58
※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: ※ 引述《chungyuandye (養花種魚數月亮賞星星)》之銘言:
: : 標題: Re: [問題]要如何將行列式使用拉普拉斯展開?
: : 時間: Wed Dec 12 00:22:53 2012:
: dim=Length@mymatrix;
: {If[OddQ[#],1,-1]*mymatrix[[1,#]],
: mymatrix[[All,Drop[Range[dim],{#}]]][[2;;-1]]}&/@
: Range[dim]
: ];
: dist[list1_,list2_List]:=Insert[#,list1,1]&/@list2
: (* 降階到11x11的minor後代Mathematica的Det *)
: anstemp1=
: Nest[Flatten[ParallelMap[dist[#[[1;;-2]],myminors[#[[-1]]]]&,#],1]&,
: myminors[A],temp1-12];
: ans=Total[ParallelTable[
: Times@@Flatten[anstemp1[[i]][[1;;-2]]]*
: Det[anstemp1[[i]][[-1]]],{i,Length@anstemp1}]
: Det[A/.z->1]-ans/.z->1
: 上面的程式在anstemp1所產生的項數共15*14*13*12=32760,所以顯然是很沒效率。
: 但如果就上述的矩陣改以下列方式計算,那速度快很多。
: temp=15;
: AA=Table[Tan[m+2n]//N,{m,1,temp},{n,1,temp}];
: BB=Table[Cot[m+2n]//N,{m,1,temp},{n,1,temp}];
: A=Table[Tan[m+2n]+Cot[m+2n]z//N,{m,1,temp},{n,1,temp}];
: ans1=AbsoluteTiming[Det[AA]*Det[(IdentityMatrix[temp]+z*Inverse[AA].BB)]]
: ans2=AbsoluteTiming@Det[AA+z*BB]
: ans3=AbsoluteTiming@Det[A]
: {ans1[[2]]/.z->#,ans2[[2]]/.z->#,ans3[[2]]/.z->#}&/@Range[0.1,1,0.1]
非常感謝您!!
但現在問題出在假設我的矩陣是:
M={{a11+b11*Z,a12+b12*Z,a13+b13*Z},{a21+b21*Z,a22+b22*Z,a23+b23*Z},{a31+b31*Z,a32+b32*Z,a33+b33*Z}}
要怎把它分成:
A={aij}3*3
B={bij}3*3
M=A+B*Z
這樣?
求高手幫忙想一下!! 感謝!!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com