回复: 求助: 关于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 
 
用别的方程可以求出解,可是用这个方程就求不出来,是不是方程变得有问题啊,求助高手啊!!!急
		 
		
		
		
		
		
		
		
	 |