Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-03-18
年龄: 42
帖子: 1
声望力: 0 ![]() |
![]()
请教坛子里各位高人 关于lamb波频散方程 用MATLAB编程求解 算法 及程序。
方程如图所示 |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2011-08-29
帖子: 1
声望力: 0 ![]() |
![]()
我也有同样问题
然后写了一个小小的编程,有点问题,好像方程不大对,有高手指点一下吗 第一个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 用别的方程可以求出解,可是用这个方程就求不出来,是不是方程变得有问题啊,求助高手啊!!!急 |
![]() |
![]() |