作为一个简单的例子,假设你有这个矩阵:
M = [omega 1;
2 omega];
并且您需要求解omega
满足条件的值det M = 0
。你如何在 MATLAB 中做到这一点?
这肯定很简单,但我还没有找到这个功能。
作为一个简单的例子,假设你有这个矩阵:
M = [omega 1;
2 omega];
并且您需要求解omega
满足条件的值det M = 0
。你如何在 MATLAB 中做到这一点?
这肯定很简单,但我还没有找到这个功能。
对于矩阵可以是任何东西的一般情况,您需要创建矩阵的符号表示,计算行列式并求解感兴趣的变量。您可以分别使用Symbolic Math Toolbox中的函数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工具箱。
sympoly omega
roots(det([omega 1;2 omega]))
ans =
-1.4142
1.4142
那么确定的是:om * om - 1*2 = 0
所以你会得到: om*om = 2
正式定义是: [ab ; cd] = a d - b c
我会考虑简化确定的,并找到一个求解器来求解未知数。