MATLAB中,编写ode45求解单摆运动的一阶常微分方程组 80
%函数文件(保存yfun2.m)functionexer2=yfun2(t,y);g=9.8;l=25;exer2=[x(2);(-g/l)*sin(x(1))];%程序...
%函数文件(保存yfun2.m)
function exer2=yfun2(t,y);
g=9.8;
l=25;
exer2=[x(2);(-g/l)*sin(x(1))];
%程序文件
tspan=[0,10];
y0=[0.1475,0];
[t,y]=ode45(‘yfun2’,tspan,y0);
plot(t,y(:,1));
请问这个程序错在哪?我们只上了四节课老师便要我们自己编写程序,所以很多不懂 展开
function exer2=yfun2(t,y);
g=9.8;
l=25;
exer2=[x(2);(-g/l)*sin(x(1))];
%程序文件
tspan=[0,10];
y0=[0.1475,0];
[t,y]=ode45(‘yfun2’,tspan,y0);
plot(t,y(:,1));
请问这个程序错在哪?我们只上了四节课老师便要我们自己编写程序,所以很多不懂 展开
展开全部
%单摆程序
%状态量变y[角位置,角速度]
%运动微分方程dy=[y(2),-g/l*y(1)]
function main
TSPAN=0:0.01:10;
y0=[0.1475,0];
[t,y]=ode45(@(t,y) yfun2(t,y),TSPAN,y0);
plot(t,y(:,1),'r');
hold on
plot(t,y(:,2),'k');
legend('position','velocity');
grid on
end
function exer2=yfun2(t,y);
g=9.8;
l=25;
exer2(1,1)=y(2);
exer2(2,1)=(-g/l)*sin(y(1));
%程序文件
end
追答
这样改下试试:
%单摆程序
%状态量变y[角位置,角速度]
%运动微分方程dy=[y(2),-g/l*y(1)]
function main
TSPAN=0:0.01:10;
y0=[0.1475,0];
[t,y]=ode45(@yfun2,TSPAN,y0);
plot(t,y(:,1),'r');
hold on
plot(t,y(:,2),'k');
legend('position','velocity');
grid on
end
function exer2=yfun2(t,y);
g=9.8;
l=25;
exer2(1,1)=y(2);
exer2(2,1)=(-g/l)*sin(y(1));
%程序文件
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询