马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
微分方程中一个系数是开闭函数,就是需要调用这个函数
主函数:
global e xi Omega omega k;%定义全局变量
e=0.1;xi=0.01;Omega=0.5;omega=1;k=0.1;%对参数赋值
[t,u]=ode45('ode3',[0:0.1:50],[1 0 0 0]);
子函数:
function du=ode3(t,u)%解微分方程组函数
global e xi Omega omega k
alpha=pi/6;
beta=pi/6;
theta=omega*t+beta;
ff=fcrack(alpha,theta);
du=zeros(4,1);%u1=x,u2=x',u3=y,u4=y'
du(1)=u(2);
du(2)=ff*k/Omega^2*sin(2*omega*t)/2*u(3)-2*xi/Omega*u(2)-(1/Omega^2-ff*k/Omega^2*cos(omega*t)^2)*u(1)+1/Omega^2+e*cos(omega*t);
du(3)=u(4);
du(4)=ff*k/Omega^2*sin(2*omega*t)/2*u(1)-2*xi/Omega*u(4)-(1/Omega^2-ff*k/Omega^2*sin(omega*t)^2)*u(3)+e*sin(omega*t);
function f=fcrack(alpha,theta)%开闭函数
theta2=mod(theta,2*pi);%令theta2的范围在0-2pi之内
if -pi/2+alpha<=theta2&theta2<=pi/2-alpha
f=1;
elseif pi/2-alpha<=theta2&theta2<=pi/2+alpha
f=1/2+1/2*cos((theta2-pi/2+alpha)*pi/(2*alpha));
elseif pi/2+alpha<=theta2&theta2<=3*pi/2-alpha;
f=0;
elseif 3*pi/2-alpha<=theta2&theta2<=3*pi/2+alpha;
f=1/2+1/2*cos((theta2-3*pi/2-alpha)*pi/(2*alpha));
end
运行时错误信息:One or more output arguments not assigned during call to 'ode3 (fcrack)'.
请问程序应该怎么修改才正确
[ 本帖最后由 eight 于 2008-5-8 22:10 编辑 ] |