因此我得到了二阶边值问题,其中y(0)= 5且y(20)= 8。我们应该使用ode45的拍摄方法来近似解决方案并将其与实际解决方案进行比较。我已经将方程转换为一阶方程并找到了解析解(y1)。我们应该输入-1和-.5的用户输入猜测,但是当我这样做时,图形根本不像实际的那样。我已经注释掉了我们应该用来获得解决方案的while循环,因为我需要第一部分来解决。我不确定问题是什么......
f.m文件
function xp=f(t,x)
xp=zeros(2,1);
xp(1)=x(2);
xp(2)=exp(-5*t)-x(2)-9.81*sin(x(1));
main.m文件
clear
clc
syms t;
c = -1.783049298*10^(-4);
d = 7.000178305;
y1 = c*exp((1/7+2*sqrt(2)/7)*t)+d*exp((1/7-2*sqrt(2)/7)*t)+t-2;
errta = 1;
prompt = 'Enter a guess for the slope';
z = input(prompt);
guesses(1) = z;
[t,x]=ode45('f',[0,20],[5,z]);
result(1) = x(length(x),1);
z = input(prompt);
guesses(2) = z;
[t,x]=ode45('f',[0,20],[5,z]);
result(2) = x(length(x),1);
% while errta>0.000001
% z = (guesses(2)+guesses(1))/2;
%
% [t,x]=ode45('f',[0,20],[5,z]);
% if x(length(x),1)>8
% guesses(2)=z;
% end
%
% if x(length(x),1)<8
% guesses(1)=z;
% end
%
% errta = abs(-.82857121689-z);
% end
plot(t,x(:,1),'r')
title('ode45 vs actual')
hold on
ezplot(y1,[0,20])
hold off
答案 0 :(得分:0)
x''+x'+9.81*sin(x)=exp(-5*t)
在odefunc f
中使用的是一个阻尼摆,其中一些指数递减强迫。因此可以预期在t=20
达到平衡点或静止点。这些被称为x=2*pi*k
。因此,从初始速度到最终位置的映射将类似于阶梯函数,并且二分函数将找到最终值8所在的几乎垂直的分段。但可能不是最终值恰好是8的点。制作一个初始速度的图,范围从5到10,看看这个效果。
名为y1
的确切解决方案属于微分方程
7*x''-2*x'-x=-t
初始速度和最终位置之间的关系几乎与解v0=-0.828571216889
呈线性关系,它似乎与数值求解器的步长无关。该值也与建议的初始猜测一致。