24小时热门版块排行榜    

查看: 1954  |  回复: 0

Leo_1912

新虫 (初入文坛)

[交流] Matlab时间变量/变系数微分方程求解问题

这是一个动力学方程,d2x/dt2=F-kx-cx;其中F是随时间变化的变量,已经插值得到任意时刻F。把方程简化,x''=F-x-x',即变系数二阶微分方程,用ode45求解。有人说只要F的步长跟求解步长一致就能求解,但是不知道怎么把F写进程序;还有说用用循环程序求解,按照建议编程后求解结果是0。这个问题该怎么解决?求助大神。
clc;clear
F=[0 0;1 2;2 5;3 7;4 9;5 10;6 9;7 7;8 5;9 2;10 0]
x0=F(:,1);
y0=F(:,2);
T=F(:,1);
F=F(:,2);
a=[0:0.01:10]';

for i=1:length(a)
    f(i)=lagr_interp(x0,y0,a(i));
end
f=f'
F=[a f];
subplot(2,1,1);
plot(F(:,1),F(:,2))
xlabel('t / ms')
ylabel('Fpt / N')
axis([0 10 0 11])
%插值得到F矩阵

%调用的方程函数
function dy=fun(t,y,F)
dy(1)=y(2);
dy(2)=F-y(1)-dy(1);
dy=[dy(1);dy(2)];

%循环求解程序,结果是一系列0值
for ii=1:length(f);
[t,y]=ode45(@fun,[0:0.01:10],[0;0],[],f(ii));
end
y(:,1)
subplot(2,1,2)
plot(t,y(:,1))
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Leo_1912 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见