Matlab在矩阵中的替换不能如期进行

问题描述 投票:0回答:1

下面的matlab代码哪里出了问题?

C=sym('a',[2,1]);
A=sym('aa',2);

A(1,1)=C(1)-10*C(2)*C(2);
A(2,2)=C(2);

subs(A(1,1),C(1),solve(trace(A)==1,C(1)));

disp(A);

按照我的理解,A的对角线元素被设为a1和a2的函数。然后,在表达式中的A(1,1)位置,代入C(1)(也就是a1),求变量C(1)的解trace(A)==1。但显示矩阵A时,似乎没有变化。

请问是什么错误?子为什么不能如愿?以上是大型代码中最小的不工作的例子。

matlab substitution
1个回答
0
投票

代码中没有错误。在我的理解中,代码中没有错误。subs = subs(s, old, new) 函数根据定义返回一个 s 在出现了所有 old 被替换为 new,然后评估 s.

你的代码做的是 定义 A呼叫 subs 然后显示 A. 由于 subs 的条目不受影响。A 由上所述,你就得到了 "老"。A 显示。

因此,如果你想替换 A(1, 1) 附带 subs 为您创建的,您应该例如使用

A(1, 1) = subs(C(1) , solve(trace(A) == 1, C(1)));

0
投票

据我所知,你试图用解方程的结果替换A(1,1)处的元素。在这种情况下,你应该做这样的事情。

C = sym('a',[2,1]);
A = sym('aa',2);
A(1,1) = C(1);
A(2,2) = C(2);
A(1,1) = subs(C(1),solve(trace(A) == 1, C(1)));
disp(A);

这样就会出现以下结果

[ 1 - a2, aa1_2]
[  aa2_1,    a2]
© www.soinside.com 2019 - 2024. All rights reserved.