Matlab运行m文件时出现 Missing variable or function.作为初学者,完全不知道问题出在哪里,谢谢!
functionrkode(rho0,N0,b0,w0,g20,H0,g,lambda,alpha,zmin,zmax)globalglambdaalpha;M=[100...
function rkode(rho0,N0,b0,w0,g20,H0,g,lambda,alpha,zmin,zmax)
global g lambda alpha;
M=[1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0];
%g=9.8;
%lambda=0.3;
%alpha=0.083;
Q0=pi*w0*b0^2;
M0=0.5*pi*(w0*b0)^2;
B0=pi*lambda^2/(1+lambda^2)*b0^2*w0*g20;
zspan=[zmin,zmax];
IC=[Q0,M0,B0,rho0,N0,b0,w0,g20];
options=odeset('Mass',M);
[z,Y]=ode15s(@odetest,zspan,IC,options)
hold on
plot(z,Y(:,6),'k-.');
plot(z,Y(:,7),'b-.');
plot(z,2*Y(:,8),'r-.');
legend('b','w','g2','Location','NorthEast');
hold off
return
function dy=odetest(z,y)
global alpha ;
[dimm dimn]=size(y);
dy=[2*pi*alpha*y(6,:).*y(7,:)
lambda^2*pi*y(6,:)^2.*y(8,:)
-pi*y(6,:).^2.*y(7,:).*y(5,:)];
return 展开
global g lambda alpha;
M=[1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0];
%g=9.8;
%lambda=0.3;
%alpha=0.083;
Q0=pi*w0*b0^2;
M0=0.5*pi*(w0*b0)^2;
B0=pi*lambda^2/(1+lambda^2)*b0^2*w0*g20;
zspan=[zmin,zmax];
IC=[Q0,M0,B0,rho0,N0,b0,w0,g20];
options=odeset('Mass',M);
[z,Y]=ode15s(@odetest,zspan,IC,options)
hold on
plot(z,Y(:,6),'k-.');
plot(z,Y(:,7),'b-.');
plot(z,2*Y(:,8),'r-.');
legend('b','w','g2','Location','NorthEast');
hold off
return
function dy=odetest(z,y)
global alpha ;
[dimm dimn]=size(y);
dy=[2*pi*alpha*y(6,:).*y(7,:)
lambda^2*pi*y(6,:)^2.*y(8,:)
-pi*y(6,:).^2.*y(7,:).*y(5,:)];
return 展开
1个回答
展开全部
g,lambda,alpha到底是输入参数还是global变量呢?请区分清楚,不要重名。
追问
是输入参数,我完全不懂哎,能否详细解答一下应该如何更改?O(∩_∩)O谢谢!!!万分感谢!!!
追答
先看函数rkode
global g lambda alpha;
这一句是声明g lambda alpha为全局变量,也就是说是在函数外定义的变量,而函数的参数列表中又有这三个变量,因此会造成混乱;既然您说是输入参数,那就要把global一行删掉;
再看函数odetest
很明显,程序中用到了两个变量alpha 和 lambda,但是只有alpha 声明为global了,lambda则未定义。我猜想这两个参数应该也作为函数的输入参数,因此函数的参数列表里要再加上这两个变量,并且删掉global一句。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询