Re: [问题]要如何将行列式使用拉普拉斯展开?

楼主: chungyuandye (养花种鱼数月亮赏星星)   2012-12-14 20:19:01
※ 引述《chungyuandye (养花种鱼数月亮赏星星)》之铭言:
: 标题: Re: [问题]要如何将行列式使用拉普拉斯展开?
: 时间: Wed Dec 12 00:22:53 2012
:
: ※ 引述《candy88257 (阿泰斯)》之铭言:
: : 在此说的拉普拉斯是指: http://tinyurl.com/bhhlt4q
: : 上面网址是维基百科
: : 有办法做到这点吗?
: : 想把10几阶的矩阵使用拉普拉斯展开,不想用Det算
: : 因为用Det怪怪的,行列式值会有分母....,明明所有数值都没分数的说...
: : 求高手帮忙!! 感谢!!!
:
: temp=12;
: A:=N@Table[Sin[m+2n]+Cos[m+2n]z,{m,1,temp},{n,1,temp}];
:
: myminors[mymatrix_?MatrixQ,i_,j_]:=Block[{dim},
: dim=Length@mymatrix;
: mymatrix[[All,Drop[Range[dim],{j}]]][[Drop[Range[dim],{i}]]]]
:
: mydet[mymatrix_?MatrixQ]:=
: Total[Table[Det@myminors[mymatrix,1,i]*mymatrix[[1,i]]*If[OddQ[i],1,-1],
: {i,Length@A}]]
:
: {temp=#;Det[A/.z->1]-mydet[A/.z->1]}&/@Range[2,12]
:
: mydet[A]//Simplify
:
: 推 AmibaGelos:您好,这样做的话似乎只能用在12的情况?更高阶便必须做 12/13 09:18
: → AmibaGelos:更多的展开@@...共会有n!/11!项ORZ 12/13 09:20
: → chungyuandye:是的,更高阶的话要将每个minor继续分解 12/13 10:37
(* Laplace expansion *)
temp1=15;
A=N@Table[Tan[m+2n]+Cot[m+2n]z,{m,1,temp1},{n,1,temp1}];
myminors[mymatrix_?MatrixQ]:=Block[{dim},
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]
作者: candy88257 (阿泰斯)   2012-02-15 19:42:00
感谢!!!大大,虽然您新写的语法比较快,但是...你新写的语法只能用在您设定的矩阵吧@@而我现在既定的矩阵没办法像您那个矩阵一样那么有规律.也就是Z没办法像那样直接分开...请问有解决方法吗@@?补充: 虽然矩阵很复杂,但是都可写成a+bZ的形式是22*22的矩阵会有Z^2求神手帮忙想一下 感谢!请问大大ans1的原理为何@@?我会了@@ 其实是很简单的转换... 没稍微动一下头脑不行了

Links booklink

Contact Us: admin [ a t ] ucptt.com