Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-08-10, 19:06   #1
shoney
初级会员
 
注册日期: 2009-08-09
帖子: 8
声望力: 0
shoney 正向着好的方向发展
默认 为什么我的计算结果中重复显示某个变量的值?

下面这个程序是某本参考书上面的(解一维抛物线型偏微分方程),我照着输入到Matlab6.5中,当我在命令窗口中输入ex0903来计算的时候,计算结果中却重复显示M=50,这是什么原因啊?开始以为是代码中误把分号写成了逗号,但是检查了一下,也没有啊。偶是新手,请达人指教!

function [u,x,t]=EF_Euler(A,xf,T,it0,bx0,bxf,M,N)
%解方程 A u_xx = u_t,0<=x<=xf,0<=t<=T
%初始条件:u(x,0)=it0(x)
%边界条件:u(0,t)=bx0(t),u(xf,t)=bxf(t)
%M:x轴的等分段数
%N:t轴的等分段数

dx=xf/M;x=[0:M]*dx;
dt=T/N;t=[0:N]*dt;
for i=1:M+1
u(i,1)=it0(x(i));
end
for n=1:N+1
u([1,M+1],n)=[bx0(t(n));bxf(t(n))];
end
r=A*dt/dx/dx;r1=1-2*r;
if (r>0.5)
disp('r>0.5,unstability');
end
for k=1:N %从k开始
for i=2;M %从i-1开始
u(i,k+1)=r*(u(i+1,k)+u(i-1,k))+r1*u(i,k);
end
end

function ex0903()
%调用函数EF_Euler解热传导方程

A=0.5; %方程系数
it0=inline('sin(pi*x)','x'); %初始条件
bx0=inline('0');bxf=inline('0'); %边界条件
xf=2;M=50;T=0.1;N=100;
[u1,x,t]=EF_Euler(A,xf,T,it0,bx0,bxf,M,N);
figure(1),clf,mesh(t,x,u1)
xlabel('x')
ylabel('y')
zlabel('U')
title('x>0.5')
figure(2),clf,mesh(t,x,u1)
xlabel('x')
ylabel('y')
zlabel('U')
title('x<0.5')
shoney 当前离线   回复时引用此帖
旧 2009-08-10, 19:25   #2
shoney
初级会员
 
注册日期: 2009-08-09
帖子: 8
声望力: 0
shoney 正向着好的方向发展
默认 回复: 为什么我的计算结果中重复显示某个变量的值?

原来是把下面这条语句里的标点符号搞错了,分号应该是冒号,呵呵
眼神得尖点才能看出来,呵呵

for i=2;M %从i-1开始
shoney 当前离线   回复时引用此帖
回复

主题工具
显示模式

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

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



所有时间均为北京时间。现在的时间是 12:23


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