声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4845|回复: 17

[编程技巧] 如何求符号矩阵的特征向量和特征值

[复制链接]
发表于 2008-1-19 15:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
如果A是一个6*6符号矩阵,怎么求特征值和特征向量?用eig命令出不来。
谢谢!

[ 本帖最后由 eight 于 2008-1-22 20:33 编辑 ]

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2008-1-19 16:07 | 显示全部楼层
把你的矩阵发上来
 楼主| 发表于 2008-1-19 16:08 | 显示全部楼层
A =[1/400*Ku1+1725/2, 0,0,0,-991/4000000*Ku1-12248233115910143/68719476736000, -97/160000*Ku1+54571167268208641/687194767360000]

[0,1480,0,60312500878861923/219902325555200,0,-43527/80]

[0,0,4905,12553/5000,93987/100,0]

[-172418001613650068612276415123836371/126765060022822940149670320537600-281598380762179646017/147573952589676412928000*Ku1,32436549376337979455552872848285/4951760157141521099596496896,2609432633820326107389/360287970189639680,57530830847342842585882386592541550309/8112963841460668169578900514406400, 73307493021474301918380386406956644511/20769187434139310514121985316880384+279063995335320029202847/1475739525896764129280000000*Ku1,-1354477678519499343754979707045247529/405648192073033408478945025720320+27315042933931425663649/59029581035870565171200000*Ku1]

[-21722105204396473642839578503701757/7922816251426433759354395033600-183706216937329412267/46116860184273879040000*Ku1, 311373990188635568032750966537065/158456325028528675187087900672,
10504248104940279636951/720575940379279360, 1135173971487463427574298206210052003/507060240091291760598681282150400,46295287827180113278430746879348424757/6490371073168534535663120411525120+182052860984893447556597/461168601842738790400000000*Ku1,-110494010266873135878859117942805937/101412048018258352119736256430080+17819503042920952989899/18446744073709551616000000*Ku1]

[5176872954020973359839485214174111/3961408125713216879677197516800-477944573554009941053/46116860184273879040000*Ku1,-187427245542276680036352225542139675/20282409603651670423947251286016,20867746608037767761811/92233720368547758080, -47206098884935394408735783204545265591/20282409603651670423947251286016000,-143651354446541530512474378655735587/6490371073168534535663120411525120+473643072392023851583523/461168601842738790400000000*Ku1,186371970901181960968666691885510095617/32451855365842672678315602057625600+46360623634738964282141/18446744073709551616000000*Ku1]

是一个6×6的,关于ku1的矩阵...

[ 本帖最后由 ChaChing 于 2010-5-29 23:52 编辑 ]
发表于 2008-1-19 16:22 | 显示全部楼层
能不能先给ku1赋值啊
这个也太长了...:@L

[ 本帖最后由 ChaChing 于 2010-5-29 23:56 编辑 ]
 楼主| 发表于 2008-1-19 16:25 | 显示全部楼层
解出的A是关于ku1的矩阵,ku1是变量。理论上求出来的A的特征值和特征向量应该是ku1的函数,只是eig命令求不出来,会出错。不知道有没有别的办法求一下?

如果先赋值的话,那得到的特征值和特征向量就是常数了,怎么和ku1联系呢?被这个问题困扰好久了......

[ 本帖最后由 ChaChing 于 2010-5-29 23:53 编辑 ]
发表于 2008-1-19 16:28 | 显示全部楼层
还有eigs,qz等

最后就是要一长串表达式?
ku1代表某个物理意义,总该给个值吧, 要不,长长的一串,看着都头晕

可以加一个外循环,每次变化都有一个ku1值

[ 本帖最后由 ChaChing 于 2010-5-29 23:55 编辑 ]
发表于 2008-1-19 16:34 | 显示全部楼层
eig函数只能求解已知方阵的特征向量和特征值,方阵中有没有被赋值的变量,肯定出错啊。

[ 本帖最后由 ChaChing 于 2010-5-29 23:57 编辑 ]
 楼主| 发表于 2008-1-19 16:36 | 显示全部楼层
ku1代表的是某一个方向上的刚度。

如果用eigs,会提示出错:
Error using ==> fcnchk
If FUN is a MATLAB object, it must have an feval method.
这个提示不太明白什么意思:@L

qz好像不适合符号矩阵

外循环的办法不知道怎么做呢?我不太会。能不能详细说一下啊,谢谢
初值ku1=170000

[ 本帖最后由 ChaChing 于 2010-5-30 00:08 编辑 ]
发表于 2008-1-19 16:43 | 显示全部楼层
这个好象比较复杂,要把符号变量变成数字, 好象用到subs 或者 inline等
我也不懂,你搜索下论坛,解决了回来共享下

如果一开始就不是符号变量,那就容易多了

[ 本帖最后由 ChaChing 于 2010-5-30 00:12 编辑 ]
 楼主| 发表于 2008-1-19 16:50 | 显示全部楼层
如果一开始不是符号变量的话,那求到特征值能和这个变量联系起来吗?怎么联系呢?

[ 本帖最后由 ChaChing 于 2010-5-30 00:13 编辑 ]
发表于 2008-1-19 16:56 | 显示全部楼层
刚刚查了下,VPA好象可以
你再看看帮助

可以把这个变量作为外循环啊
你把你的程序发上来,

[ 本帖最后由 ChaChing 于 2010-5-30 00:45 编辑 ]
 楼主| 发表于 2008-1-19 17:09 | 显示全部楼层
m=400; Ixx=19.84; Iyy=30.66; Izz=23.54; Ixy=9.79; Ixz=-0.11; Iyz=0.42;
M=[m 0 0 0 0 0 ;0 m 0 0 0 0 ;0 0 m 0 0 0 ;0 0 0 Ixx -Ixy -Ixz;0 0 0 -Ixy Iyy -Iyz;0 0 0 -Ixz -Iyz Izz]
x1=-0.087; y1=0.2425; z1=-0.0991;
x2=-0.087; y2=-0.24148; z2=-0.0991;
x3=-0.654; y3=0.00052; z3=-0.2733;
E1=[1 0 0 0 z1 -y1;0 1 0 -z1 0 x1;0 0 1 y1 -x1 0]
B1=[1 0 0;0 1 0;0 0 1]
syms Ku1 r
Kv1=170000; Kw1=800000; K1=[Ku1 0 0;0 Kv1 0;0 0 Kw1]
k1=E1'*B1'*K1*B1*E1
E2=[1 0 0 0 z2 -y2;0 1 0 -z2 0 x2;0 0 1 y2 -x2 0];
B2=B1; Ku2=132000; Kv2=129000; Kw2=800000;
K2=[Ku2 0 0;0 Kv2 0;0 0 Kw2]; k2=E2'*B2'*K2*B2*E2;
E3=[1 0 0 0 z3 -y3;0 1 0 -z3 0 x3;0 0 1 y3 -x3 0];
B3=B1; Ku3=213000; Kv3=293000; Kw3=362000;
K3=[Ku3 0 0;0 Kv3 0;0 0 Kw3]; k3=E3'*B3'*K3*B3*E3
K=k1+k2+k3; A=(inv(M))*K

vpa是把矩阵A精确表示了...

[ 本帖最后由 ChaChing 于 2010-5-30 00:18 编辑 ]
发表于 2008-1-19 19:01 | 显示全部楼层
  1. m=400; Ixx=19.84; Iyy=30.66; Izz=23.54; Ixy=9.79; Ixz=-0.11; Iyz=0.42;
  2. M=[m 0 0 0 0 0 ;0 m 0 0 0 0 ;0 0 m 0 0 0 ;0 0 0 Ixx -Ixy -Ixz;0 0 0 -Ixy Iyy -Iyz;0 0 0 -Ixz -Iyz Izz];
  3. x1=-0.087; y1=0.2425; z1=-0.0991;
  4. x2=-0.087; y2=-0.24148; z2=-0.0991;
  5. x3=-0.654; y3=0.00052; z3=-0.2733;
  6. E1=[1 0 0 0 z1 -y1;0 1 0 -z1 0 x1;0 0 1 y1 -x1 0];
  7. B1=[1 0 0;0 1 0;0 0 1];
  8. %
  9. Ku1=linspace(170000,500000,100); lenda=zeros(6,length(Ku1));
  10. for i=1:length(Ku1)
  11.     Kv1=170000; Kw1=800000; K1=[Ku1(i) 0 0;0 Kv1 0;0 0 Kw1];
  12.     k1=E1'*B1'*K1*B1*E1;
  13.     E2=[1 0 0 0 z2 -y2;0 1 0 -z2 0 x2;0 0 1 y2 -x2 0];
  14.     B2=B1; Ku2=132000; Kv2=129000; Kw2=800000;
  15.     K2=[Ku2 0 0;0 Kv2 0;0 0 Kw2]; k2=E2'*B2'*K2*B2*E2;
  16.     E3=[1 0 0 0 z3 -y3;0 1 0 -z3 0 x3;0 0 1 y3 -x3 0];
  17.     B3=B1; Ku3=213000; Kv3=293000; Kw3=362000;
  18.     K3=[Ku3 0 0;0 Kv3 0;0 0 Kw3]; k3=E3'*B3'*K3*B3*E3;
  19.     K=k1+k2+k3; A=(inv(M))*K;
  20.     lenda(1:6,i)=eig(A);
  21. end
复制代码
这样,特征值放在lenda的列,每个ku1对应相应的lenda列向量

循环的范围,你自己改吧

[ 本帖最后由 ChaChing 于 2010-5-30 00:43 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2008-1-19 21:00 | 显示全部楼层
非常感谢!
只是这样体现的是ku1取一个值,对应的有一个A的特征向量吧。体现不出特征向量和ku1的关系式吧?
不过我找了半天,到现在都没有发现能够求解符号特征值的。

[ 本帖最后由 ChaChing 于 2010-5-30 00:24 编辑 ]
发表于 2008-1-19 21:56 | 显示全部楼层
特征向量没算,是特征值.

1对6,不好给出曲线关系

[ 本帖最后由 ChaChing 于 2010-5-30 00:25 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 15:28 , Processed in 0.060837 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表