MATLAB程序出错了,怎么样修改?

MATLAB程序出错了,怎么样修改?,第1张

题主提供的代码没有错误,世察但运行时出错,其问题在于,题主把自定义函数与主程序的运行顺序搞反了。

方法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) %在主函数中需要的地方将新内容调用即可


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12542115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存