矩阵内的 Matlab 替换未按预期工作
Matlab substitution within matrices not working as intended
下面的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 时,它似乎没有变化。
错误是什么?为什么潜艇没有按预期工作?以上是大型代码的最小非工作示例。
据我了解,您尝试用求解方程式的结果替换 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]
代码没有错误。根据定义,subs = subs(s, old, new)
函数 returns 是 s
的一个副本,在所有出现的 old
都替换为 new
之后,然后计算 s
。
您的代码所做的是:定义 A
,调用 subs
,然后显示 A
。由于 subs
不会影响 A
的条目,根据上述解释,您会显示 "old" A
。
因此,如果您想用 subs
为您创建的表达式替换值 A(1, 1)
,您应该例如使用
A(1, 1) = subs(C(1) , solve(trace(A) == 1, C(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 时,它似乎没有变化。
错误是什么?为什么潜艇没有按预期工作?以上是大型代码的最小非工作示例。
据我了解,您尝试用求解方程式的结果替换 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]
代码没有错误。根据定义,subs = subs(s, old, new)
函数 returns 是 s
的一个副本,在所有出现的 old
都替换为 new
之后,然后计算 s
。
您的代码所做的是:定义 A
,调用 subs
,然后显示 A
。由于 subs
不会影响 A
的条目,根据上述解释,您会显示 "old" A
。
因此,如果您想用 subs
为您创建的表达式替换值 A(1, 1)
,您应该例如使用
A(1, 1) = subs(C(1) , solve(trace(A) == 1, C(1)));