feelingji 发表于 2011-3-31 20:29

小弟刚学matlab,请教大家一个问题

a=,这是一个符号矩阵,x是独立变量,要求此矩阵的特征值和特征变量,这是机械振动上的一道题,矩阵a就是系统的特征方程,我用eig函数没有求出来,还请高手指教!

ChaChing 发表于 2011-3-31 23:56

回复 1 # feelingji 的帖子

1.建议标题要明确!?
2.求助完整格式应该有出错代码和出错提示!?
3.没报错!? (R2009a)
syms m k x;a=; eig(a)

feelingji 发表于 2011-4-2 20:05

ChaChing 发表于 2011-3-31 23:56 static/image/common/back.gif
回复 1 # feelingji 的帖子

1.建议标题要明确!?


小弟第一次在次论坛上发帖,规矩多有不懂,多谢楼主指教。我用你给的方法在matlab上运行得出以下结果,结果很长很吓人,现有如下问题:
ans =

                                                                                                                                                                                                                                                                                                                                          1/6*(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)-6*(2/3*k*m*x-3*k^2-1/12*m^2*x^2)/(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)+3*k-3/2*m*x
-1/12*(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)+3*(2/3*k*m*x-3*k^2-1/12*m^2*x^2)/(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)+3*k-3/2*m*x+1/2*i*3^(1/2)*(1/6*(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)+6*(2/3*k*m*x-3*k^2-1/12*m^2*x^2)/(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3))
-1/12*(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)+3*(2/3*k*m*x-3*k^2-1/12*m^2*x^2)/(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)+3*k-3/2*m*x-1/2*i*3^(1/2)*(1/6*(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3)+6*(2/3*k*m*x-3*k^2-1/12*m^2*x^2)/(-162*k^2*m*x+648*k^3+3*(6720*k^3*m^3*x^3-29484*k^4*m^2*x^2-900*k^2*m^4*x^4+69984*k^5*m*x+72*k*m^5*x^5-93312*k^6-3*m^6*x^6)^(1/2))^(1/3))
1、x是自变量,结果应该用m、k表示x;
2、结果太长,怎样把结果简化。
这是书上给出的答案:x1=0.3515k/m ,x2=1.6066k/m,x3=3.5419k/m
谢谢回答!

meiyongyuandeze 发表于 2011-4-2 20:22

本帖最后由 meiyongyuandeze 于 2011-4-2 20:28 编辑

你可以采用以下的语句进行化简:
s=simple(ans),这种方法是自动选择最简单格式进行化简,除了simple函数matlab中还有其他的化简函数如collect()来进行合并同类项,expand()可以进行多项式展开,factor()因式分解,number()可以提取多项式的分子和分母,sincos()可以进行三角函数化简,具体的用法是可有help文件查到,但即使你用了这些化简的函数进行化简也不见得能得到你给出的答案。这可能是因为matlab在进行符号运算的时候,很大程度上是基于傅里叶展开来进行的,将复杂的函数展开成级数而后进行计算,所以得到的是很多项的求和,这也就不奇怪了,计算机没有人那么聪明,呵呵,建议能自己算的问题还是自己算,真的不好算的再用计算机来计算,个人的一点认识,希望对你有帮助!
页: [1]
查看完整版本: 小弟刚学matlab,请教大家一个问题