题主提供的代码没有错误,世察但运行时出错,其问题在于,题主把自定义函数与主程序的运行顺序搞反了。
方法1、分别将y1=Q(r)、y2=R(q)和y3=S(r)自定义函数保存为Q.m、R.m和S.m文件,再将主程序保存为main.m文件,然后在命令窗蠢核口中,执行 >>main %回车
方法2、建立main.m文件,按下列顺序书写程序
①主程序
function main( )
clearclc
format short
。。。。。。
disp([r',theta'])
②Q(r)自定义函数、R(q)自定义搜档茄函数和S(q)自定义函数
function y1=Q(r)
c1=2.7132e15
。。。。。。。
function y2=R(q)
y2=q
function y3=S(r)
c1=2.7132e15
。。。。。。。
最后执行可得
% lx=17ly=11 %定义矩缺粗阵维数
lx=20ly=11 %修改
% v1=zeros(ly,lx) %建立一个矩阵
v1=ones(ly,lx)*80 %修改
for j=2:lx-1
v1(ly,j)=100
end %设置边界条件
v2=v1
maxt=1
t=0
k=0
while(maxt>1e-6) %精度要求,达到精度要求跳出循环
k=k+1
maxt=0
for i=2:ly-1
for j=2:lx-1
v2(i,j)=(v1(i,j+1)+v1(i+1,j)+v2(i-1,j)+v2(i,j-1))/4
%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 %输出迭代次数 k=419
subplot(1,2,1),mesh(v2)
% axis([0,17,0,11,0,100])
axis([0,20,0,11,80,100])%修改
subplot(1,2,2),contour(v2,32)
function thefun(x) %将需要变的内容坦桥设置为那个函数的参数(类型是字符串)...
eval(x) %在其被用到的位置用eval函数对字符串x求值
x='新表达式' %在主函数中将新表让源猛达式以字符串的形式定义裂伍为一个变量
thefun(x) %在主函数中需要的地方将新内容调用即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)