作业帮 > 综合 > 作业

我的matlab程序大家给指点下怎么回事,运行不出来?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/06 16:02:48
我的matlab程序大家给指点下怎么回事,运行不出来?
lx=50;ly=25;
v1=zeros(ly,lx);
for i=2:49
v1(i,25)=1;
v1(i,0)=sin((i*pi)/50)+5*(10^-2).*(i*pi/50).*(4-(i*pi/50))-0.1249.*v1(i,25);
end
v2=v1;
maxt=1;t=0;
k=0;
while(maxt>1e-6)
k=k+1;
maxt=0;
for i=2:49
for j=2:24;
v1(i,0)=(v1(i,1)+2v1(i,2)-v1(i,3))/2;
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;
t=abs(v2(i,j)-v1(i,j));
if(t>maxt)
maxt=t;
end
end
end
v1=v2;
end
subplot(1,2,1),mesh(v1)
axis([0,50,0,25,0,100])
subplot(1,2,2),plot(v1)
这是我改过的程序 ,麻烦您再帮我看看!
v1=zeros(ly,lx);
for i=2:48
v1(i,25)=(sin((i*pi)/50)+5*(10^-2).*(i*pi/50).*(4-(i*pi/50))-(v1(i,1)+2.*v1(i,2)-v1(i,3))./2)./0.1249;
%v1(i,1)=sin((i*pi)/50)+5*(10^-2).*(i*pi/50).*(4-(i*pi/50))-0.1249.*v1(i,25);
end
v2=v1;
maxt=1;t=0;
k=0;
while(maxt>1e-6)
k=k+1;
maxt=0;
for i=2:48
for j=2:23;
% v1(i,0)=(v1(i,1)+2*v1(i,2)-v1(i,3))/2;
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;
t=abs(v2(i,j)-v1(i,j));
if(t>maxt)
maxt=t;
end
end
end
v1=v2;
end
%x=0:pi/50:pi;
%y=0:pi/50:pi/2;
subplot(1,2,1),mesh(v1)
axis([0,pi,0,pi/2,0,10])
subplot(1,2,2),plot(v1)
你好,问题太多了,大概看了一下,你先改
v1(i,0)=sin((i*pi)/50)+5*(10^-2).*(i*pi/50).*(4-(i*pi/50))-0.1249.*v1(i,25);
这行有问题,矩阵下标不允许有0,就是v1(i,0)
v1(i,0)=(v1(i,1)+2v1(i,2)-v1(i,3))/2;
这行也有问题,有中文括号,也有矩阵下标的问题,2v1(i,2)少个*号
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;
这行下标超标
你先改这几个地方,后面再说
--------------------------------------------主要问题在一开始:
lx=50;ly=25;
v1=zeros(ly,lx);------就是这里
v1是25*50的,你却用for i=2:48
行标号超标了,改一点就行了,只是不知道最后的图是不是你想要的:
clear all;clc;
lx=50;
ly=25;
v1=zeros(lx,ly);
for ii=2:48
v1(ii,25)=(sin((ii*pi)/50)+5*(10^-2)*(ii*pi/50)*(4-(ii*pi/50))-(v1(ii,1)+2*v1(ii,2)-v1(ii,3))./2)/0.1249;
% 这里是要给v1的第25列赋值吗?
end
v2=v1;
maxt=1;
t=0;
k=0;
while maxt>1e-6
k=k+1;
maxt=0;
for i=2:48
for j=2:23;
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v1(i-1,j)+v1(i,j-1))/4;
t=abs(v2(i,j)-v1(i,j));
if t>maxt
maxt=t;
end
end
end
v1=v2;
end
subplot(1,2,1);
mesh(v1);
axis([0,pi,0,pi/2,0,10]);
subplot(1,2,2);
plot(v1);