作为一个简单的例子,假设你有以下矩阵:
M = [omega 1;
2 omega];
您需要解决满足条件det M = 0
的omega
值。在MATLAB中如何做到这一点?
这肯定是一件简单的事情,但我还没有找到相应的函数。
M = [omega 1;
2 omega];
您需要解决满足条件det M = 0
的omega
值。在MATLAB中如何做到这一点?
这肯定是一件简单的事情,但我还没有找到相应的函数。
对于矩阵可能是任意值的一般情况,您需要创建矩阵的符号表示,计算行列式,并解决感兴趣的变量。您可以使用来自符号数学工具箱的函数SYM、DET和SOLVE进行此操作:
>> A = sym('[w 1; 2 w]'); % Create symbolic matrix
>> solve(det(A),'w') % Solve the equation 'det(A) = 0' for 'w'
ans =
2^(1/2)
-2^(1/2)
>> double(ans) % Convert the symbolic expression to a double
ans =
1.4142
-1.4142
创建初始矩阵A
的方法也有不同。上面,我用一个字符串表达式来创建它。然而,我也可以使用SYMS将w
定义为符号变量,然后像在MATLAB中一样构造矩阵:
syms w
A = [w 1; 2 w];
现在 A
是一个符号矩阵,就像第一个例子中一样。
sympoly omega
roots(det([omega 1;2 omega]))
ans =
-1.4142
1.4142
好,确定因子是: om * om - 1*2 = 0
所以你可以得到:om*om = 2
正式的定义为:[a b ; c d] = ad - bc
我建议你简化确定因子,并找到一个求解器来解决未知数。
A = sym([1 1; 2 2])
- gnovice