程序出现了死循环如何解决
我的程序是个死循环,请各位帮我看一下哪里出现错误了。程序如下:function yout=plot12
zeros(21,1);
n=1;
for i=1:20;
a(i)=8192/(81000000000000*pi.*n.^6).*exp(-90000*n.^2/4).*dblquad(@fun,0,25,0,2*pi,[],[],n);
n=n+1;
end
n=1:21;
plot(n,a);
function z=fun(x,y,n);
z=x.*(x.*cos(y)+90000*n.^2/8).^2.*(x.*sin(y)+90000*n.^2/8).^2.*exp(-8*x.^2/(90000*n.^2)-2*x.*cos(y)-2*x.*sin(y))
[ 本帖最后由 eight 于 2008-5-13 11:56 编辑 ] a(i)=8192/(81000000000000*pi.*n.^6).*exp(-90000*n.^2/4).*dblquad(@fun,0,25,0,2*pi,[],[],n);
这一行有问题
dblquad是这样调用的,没见过你那样的
q = dblquad(fun,xmin,xmax,ymin,ymax)
q = dblquad(fun,xmin,xmax,ymin,ymax,tol)
q = dblquad(fun,xmin,xmax,ymin,ymax,tol,method)
另外,这个加了干吗,function yout=plot12
而且也不对,下面没有 yout 与 之对应
[ 本帖最后由 eight 于 2008-5-13 12:00 编辑 ] 原帖由 abcdefg 于 2008-5-13 10:14 发表 http://www.chinavib.com/forum/images/common/back.gif
我的程序是个死循环,请各位帮我看一下哪里出现错误了。程序如下:
function yout=plot12
n=1;
for i=1:20;
a(i)=8192/(81000000000000*pi.*n.^6).*exp(-90000*n.^2/4).*dblquad(@fun,0,25,0,2*pi,[],[],n);
n= ... 你连哪个是循环变量都不知道,如何编程?建议先补补编程基础,多看入门书 加上function yout=plot12我是想定义个函数。还有我把那个@去掉就会出现错误了,我原来有个程序和这个程序差不多也用了@,所以我就用了,去了@够就会出现一下错误:??? Input argument 'x' is undefined.
Error in ==> C:\MATLAB6p5\work\o.m (fun)
On line 11==> z=x.*(x.*cos(y)+90000*n.^2/8).^2.*(x.*sin(y)+90000*n^2/8).^2.*exp(-8*x.^2/(90000*n^2)-2*x.*cos(y)-2*x.*sin(y))
Error in ==> C:\MATLAB6p5\work\o.m
On line 5==> a(i)=8192/(81000000000000*pi.*n^6).*exp(-90000*n^2/4).*dblquad(fun,0,25,0,2*pi,[],[],n);
我也知道这是说x,y没定义,但是我定义了也不行 原帖由 abcdefg 于 2008-5-13 11:45 发表 http://www.chinavib.com/forum/images/common/back.gif
加上function yout=plot12我是想定义个函数。还有我把那个@去掉就会出现错误了,我原来有个程序和这个程序差不多也用了@,所以我就用了,去了@够就会出现一下错误:??? Input argument 'x' is undefined.
Error i ... 看不懂,你的文件名(o.m)和函数名(plot12)不一样的?一定要相同才行。另外,三个变量的积分估计不是用 dblquad 吧?
[ 本帖最后由 eight 于 2008-5-13 12:03 编辑 ] 估计是带参数的双重积分
搜索下论坛里的精华贴
有很详细例子
页:
[1]