声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1144|回复: 4

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

[复制链接]
发表于 2006-10-24 09:45 | 显示全部楼层 |阅读模式

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

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

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

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的解为数值形式。谢谢
回复
分享到:

使用道具 举报

发表于 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 编辑 ]
 楼主| 发表于 2006-10-24 10:17 | 显示全部楼层
多谢敏敏。
再请教一下,digits括号中的整数如何选取?

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

谢谢了,我再调一下。新手就是什么都生。
发表于 2006-10-24 10:26 | 显示全部楼层
digits(5)表示5位小数,具体看你要求的精度
发表于 2006-10-24 22:44 | 显示全部楼层

多项式求根

用求多项式根的形式来求'g^3-8*g^2+8*(3-2*q)*g+16*(q-1)=0'的根,既然q值是已知的,就可以直接用函数roots()求解:
G=[1 -8 8*(3-2*q) 16*(q-1)];
g=roots(G)
%G为多项式系数组成的矩阵,结果便为所求的根
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-19 22:52 , Processed in 0.053452 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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