[求助]大家来帮忙看看——怎么求解多次方程。
我的小程序是关于求速度的。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的解为数值形式。谢谢 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 编辑 ] 多谢敏敏。
再请教一下,digits括号中的整数如何选取?
另外程序中的数是变成了数据了,可是怎么q的数值却不显示了?
谢谢了,我再调一下。新手就是什么都生。 digits(5)表示5位小数,具体看你要求的精度
多项式求根
用求多项式根的形式来求'g^3-8*g^2+8*(3-2*q)*g+16*(q-1)=0'的根,既然q值是已知的,就可以直接用函数roots()求解:G=;
g=roots(G)
%G为多项式系数组成的矩阵,结果便为所求的根
页:
[1]