Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-10-16, 23:24   #1
militarist
初级会员
 
注册日期: 2009-03-18
年龄: 42
帖子: 1
声望力: 0
militarist 正向着好的方向发展
默认 求助: 关于lamb波频散方程MATLAB解法

请教坛子里各位高人 关于lamb波频散方程 用MATLAB编程求解 算法 及程序。
方程如图所示
上传的图像
文件类型: jpg 20080331_ba9c844075f24cdfca14qf1R8poFF9e2.jpg (10.3 KB, 25 次查看)
militarist 当前离线   回复时引用此帖
旧 2011-08-29, 09:25   #2
blurry
初级会员
 
blurry 的头像
 
注册日期: 2011-08-29
帖子: 1
声望力: 0
blurry 正向着好的方向发展
警告 回复: 求助: 关于lamb波频散方程MATLAB解法

我也有同样问题
然后写了一个小小的编程,有点问题,好像方程不大对,有高手指点一下吗
第一个m文件
function y=dis_fx(x)
p=6450;
q=3090;
m=12.566
y=(p.^2*(2*q.^2-x.^2).^2).*tan(m.*(sqrt(x.^2-q.^2))./(x.*q)) + (4*q.^3).*(sqrt((x.^2-p.^2).*(x.^2-q.^2))).*tan(m.*(sqrt(x.^2-p.^2))./(x.*p));
第二个m文件
function x=findroot2(fx,x0,x1)
e=1e-6;
y0=eval([fx,'(x0)']);
y1=eval([fx,'(x1)']);
x=(x0+x1)/2;
y=eval([fx,'(x)']);
if (abs(x0-x1)<1e-6) return, end
if (y0*y<=0)
x=findroot2(fx,x0,x);
else
x=findroot2(fx,x,x1);
end



命令窗
%%注:本命令只找出x0到x1之间的根,dx太大有可能出现漏解情况
x0=0;
x1=8;
dx=0.05;
x=x0:dx:x1;
y=dis_fx(x);
n=length(x);
count=0;
root=[];
for i=1:n-1
if (y(i)*y(i+1)<0)
count=count+1;
root(count)=findroot2('dis_fx',x(i),x(i+1));
end
end
root

用别的方程可以求出解,可是用这个方程就求不出来,是不是方程变得有问题啊,求助高手啊!!!急
blurry 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 17:15


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.