下面的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时,似乎没有变化。
请问是什么错误?子为什么不能如愿?以上是大型代码中最小的不工作的例子。
代码中没有错误。在我的理解中,代码中没有错误。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)));
据我所知,你试图用解方程的结果替换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]