Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-04-25, 17:24   #1
北斗
初级会员
 
注册日期: 2008-05-04
年龄: 39
帖子: 7
声望力: 0
北斗 正向着好的方向发展
默认 请帮忙看看下面程序出错在哪里

function [zeta,s,U]=diffraction(m,n)
dzeta=1/m;
ds=6/n;
ta=dzeta/(ds*ds);
zeta=zeros(m+1,1);
s=zeros(n-1,1);
U=zeros(m+1,n-1);
b=zeros(n-1,1);
ll=zeros(n-1,1);
ul=zeros(n-1,1);
zeta=[0:dzeta:1];
s=[-(n-2)/2*ds:dsn-2)/2*ds]';
%r=3;
%thet0=4.5*10^-3;
f=inline('sqrt(0.1/sqrt(pi)/(4*10^-3)*exp(-(2*10^-3).^2/(4*10^-3).^2))*exp(-s.^2/(0.69*0.69))','s');
for j=1:n-1
U(1,j)=f(s(j));
end;
ne=2.3;
lambda0=0.5*10^-6;
ke=2*pi/lambda0*ne;
thet=-2*10^-3;
x0=18.265*10^-6;
alpha=thet*ke*x0;
g0=alpha/2*ds*ta;
g1=1/4*sqrt(-1)*ta;
for k=1:n-2
A(k,k+1)=g0-g1;
A(k+1,k)=-g1;
A(k,k)=-g0+1+2*g1;
end
A(1,1)=A(1,1)-g1;
A(n-1,n-1)=1+g1;
% 分解矩阵A
ul=A(1,1);
for l=2:n-1;
ll(l)=A(l,l-1)/ul(l-1);
ul(l)=A(l,l)-A(l-1,l)*ll(l);
end
for k=1:m;
b(1)=(1+g0-g1)*U(k,1)+(-g0+g1)*U(k,2);
for j=2:n-2;
b(j)=g1*U(k,j-1)+(1+g0-2*g1)*U(k,j)+(-g0+g1)*U(k,j+1);
end
b(n-1)=g1*U(k,n-2)+(1-g1)*U(k,n-1);
%用追赶法求解线性方程组AU=b
y(1)=b(1);
for l=2:n-1
y(l)=b(l)-ll(l)*y(l-1);
end;
U(k+1,n-1)=y(n-1)/ul(n-1);
for l=n-2-1):1
U(k+1,l)=(y(l)+(-g0+g1)*U(k+1,l+1))/ul(l);
end;
end
mesh(s,zeta,abs(U).^2)
xlabel('s')
ylabel('\xi')
zlabel('|U|.^2')
北斗 当前离线   回复时引用此帖
旧 2009-04-27, 19:02   #2
mathjiang
高级会员
 
注册日期: 2008-01-02
帖子: 247
声望力: 22
mathjiang 正向着好的方向发展
默认 回复: 请帮忙看看下面程序出错在哪里

首先,你应该贴出错误提示;
然后,看别人写的程序比较头痛。你先设置断点,自己找出问题所在的地方,在调试。
mathjiang 当前离线   回复时引用此帖
回复

主题工具
显示模式

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

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



所有时间均为北京时间。现在的时间是 01:28


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