所以我得到了一个二阶边值问题,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发布于 2015-04-14 03:51:12
x''+x'+9.81*sin(x)=exp(-5*t)在odefunc f中使用的是具有指数递减作用力的阻尼摆。因此,人们可以期望在t=20达到一个平衡点或固定点。它们被准确地称为x=2*pi*k。因此,从初始速度到最终位置的映射将类似于阶跃函数,并且对分函数将找到最终值8所在的几乎垂直的分段。但可能不是最终值恰好是8的点。绘制一个从5 t0 10范围内的初始速度图,以查看此效果。
名为y1的精确解属于微分方程
7*x''-2*x'-x=-t初始速度和最终位置之间的关系与解v0=-0.828571216889几乎是线性的,这似乎与数值求解器的步长无关。该值也与建议的初始猜测一致。
https://stackoverflow.com/questions/29574932
复制相似问题