militarist
2009-10-16, 23:24
请教坛子里各位高人 关于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
用别的方程可以求出解,可是用这个方程就求不出来,是不是方程变得有问题啊,求助高手啊!!!急
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.