在mathematica中循环语句的问题
已知p[0],V,R,B[k],写一个循环语句使图中语句从初值p[0]开始,循环50次,最后输出p[50]R是16*16的矩阵,V和B[k]是4*4的矩阵,y[x]是16...
已知p[0],V,R,B[k],写一个循环语句使图中语句从初值p[0]开始,循环50次,最后输出p[50]
R是16*16的矩阵,V和B[k]是4*4的矩阵,y[x]是16*1的矩阵
急急急!!! 展开
R是16*16的矩阵,V和B[k]是4*4的矩阵,y[x]是16*1的矩阵
急急急!!! 展开
2个回答
展开全部
LZ你前面的定义有些问题,B1、B2等需要写作B[1]、B[2]这样的形式,最后循环那段这么写就好(用的Do,这里感觉Nest不太方便)
Do[p[i] = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(k =
1\), \(16\)]\((\(\(NDSolveValue[{\(y'\)[x] == R . y[x],
y[0] == Table[
Tr[V . p[i - 1] . ConjugateTranspose[V] . B[k]]/4, {k,
16}]}, y, {x, 0, 2}]\)[1.5]\)[\([k]\)]*B[k])\)\), {i, 1,
50}]; p[50]//Chop
{{-1057.12, 0, 0, 0}, {0, -11.2151, 0, 0}, {0, 0, 379.48, 0}, {0, 0,
0, 689.859}}
NDSolveValue的好处就是不用替换直接得到结果...
另外不保证不会由于误差累计导致最后结果总误差较大
Do[p[i] = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(k =
1\), \(16\)]\((\(\(NDSolveValue[{\(y'\)[x] == R . y[x],
y[0] == Table[
Tr[V . p[i - 1] . ConjugateTranspose[V] . B[k]]/4, {k,
16}]}, y, {x, 0, 2}]\)[1.5]\)[\([k]\)]*B[k])\)\), {i, 1,
50}]; p[50]//Chop
{{-1057.12, 0, 0, 0}, {0, -11.2151, 0, 0}, {0, 0, 379.48, 0}, {0, 0,
0, 689.859}}
NDSolveValue的好处就是不用替换直接得到结果...
另外不保证不会由于误差累计导致最后结果总误差较大
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询