我正在尝试计算形式
的矩阵的符号特征值和向量[ a, c, 0]
[ c, b, e]
[ 0, e, f]
matlab中的(用一些包含x,y,z的表达式替换a,b,c等)。当我有4个关闭对角线0时,该程序是成功的。但是当矩阵只有两个非对角线元素为零时(如示例中所示),程序无法找到特征向量,但可以找到特征向量(由于它是三次多项式,因此是预期的)。特征值的表达是相当忙碌的。当我尝试计算特征向量时,它会给出错误
Warning: basis of eigenspace for eigenvalue - 1/2*((c^2*d^2*e^2 -...
Error: Unable to find eigenvectors. [mleigenvectors]
Error in ==> sym.eig at 74
S = mupadfeval('mleigenvectors',A);
我正在使用matlab R2009a。这是一个可以通过例如R2009b或更好的服务器解决的问题,还是只需要进行多次计算?这对我来说似乎不合理,因为如果你把上面的矩阵从它中减去LI(其中K是特征值I是id矩阵)并尝试求解本征向量方程,你甚至可以手工求解它来获得包含L的表达式, A,b,C,E,F,G。那么你要做的就是简单地为lambda添加表达式。但是当然结果会很长,所以我想知道这是否是一些内存问题?
由于
答案 0 :(得分:0)
我在2012a和2010a 32bit测试过,两者都很好用。
有趣的是,2012a花了0.2秒,而2010a花了0.3秒。如果以下方法不起作用,我会怀疑内部错误,因为它们会严重更新符号处理。
tic; syms a c b e f; A=[a c 0;c b e;0 e f]; [V,D]=eig(A); toc;
搜索确认这是2008年的问题......
http://www.mathworks.com/matlabcentral/newsreader/view_thread/263921
Actuall Steven,在这种情况下,多项式确实简化为立方体。 Matlab符号确实找到了特征值,但它失败了 特征向量(使用我的Matlab 2008b)
EDU>>值= EIG(A); EDU>>简化(值)
ans =
(too long to show)
但是矢量失败了:
EDU>> [载体,值] = EIG(A);警告:特征空间的基础 特征值1/3 * a + 1/3 * b + 1/3 * c +(4/9 * a ^ 2 - 1/9 * a * b - 1/9 * a * c + 1/9 * b ^ 2 + 2/9 * b * c + 1/9 * c ^ 2)/(4/9 * a * b ^ 2 + 1/9 * a ^ 2 * b - 1/18 * a * c ^ 2 + 1/9 * a ^ 2 * c - 7/18 * b * c ^ 2 + 1/9 * b ^ 2 * c - 8/27 * a ^ 3 + 1/27 * b ^ 3 + 1/27 * c ^ 3 + ( - 1/3 * a ^ 4 * b ^ 2 - 10/27 * a ^ 4 * b * c - 1/27 * a ^ 4 * c ^ 2 + 1/9 * a ^ 3 * b ^ 3 + 2/9 * a ^ 3 * ... [linalg :: eigenvectors] ???使用==>时出错mupadfeval at 28错误:无法找到特征向量。 [mleigenvectors]
==>中的错误sym.eig at 74 S = mupadfeval('mleigenvectors',A);
我在Mathematica上尝试了同样的东西,它找到了特征向量,(其中 我认为它们是正确的;),这是结果(太大而无法发布 这里也是)