ziding1763 发表于 2006-10-24 09:45

[求助]大家来帮忙看看——怎么求解多次方程。

我的小程序是关于求速度的。

function [ cl,ct,cr ] = velocity( E,d,nu )

% E为杨式模量,d为密度,nu为泊松比
%cl为纵波波速,ct为横波波速,cr为瑞利表面波波速

cl=sqrt(E*(1-nu)/(d*(1+nu)*(1-2*nu)))
ct=sqrt(E/(2*d*(1+nu)))
q=(ct/cl)^2
g=solve('g^3-8*g^2+8*(3-2*q)*g+16*(q-1)=0')
cr=sqrt(g)*ct

先计算出q的值,将数值代入g=solve('g^3-8*g^2+8*(3-2*q)*g+16*(q-1)=0')中,得到方程的解用于求cr。可是进行赋值运行后solve后没有出现g的数值解,只有公式形式。

g =

1/16*(g^3-8*g^2+24*g-16)/(g-1)

cr =

53262204856469/68719476736*((g^3-8*g^2+24*g-16)/(g-1))^(1/2)

大家帮忙看看,怎么能让g的解为数值形式。谢谢

jimin 发表于 2006-10-24 09:59

for e.
>> solve('5*x^2+9*x-8','x')


ans =

-9/10+1/10*241^(1/2)
-9/10-1/10*241^(1/2)

>> digits(5)
>> vpa(ans)

ans =

.65240
-2.4524
用subs也可以实现,具体的help一下

[ 本帖最后由 jimin 于 2006-10-24 10:01 编辑 ]

ziding1763 发表于 2006-10-24 10:17

多谢敏敏。
再请教一下,digits括号中的整数如何选取?

另外程序中的数是变成了数据了,可是怎么q的数值却不显示了?

谢谢了,我再调一下。新手就是什么都生。

jimin 发表于 2006-10-24 10:26

digits(5)表示5位小数,具体看你要求的精度

john152 发表于 2006-10-24 22:44

多项式求根

用求多项式根的形式来求'g^3-8*g^2+8*(3-2*q)*g+16*(q-1)=0'的根,既然q值是已知的,就可以直接用函数roots()求解:
G=;
g=roots(G)
%G为多项式系数组成的矩阵,结果便为所求的根
页: [1]
查看完整版本: [求助]大家来帮忙看看——怎么求解多次方程。