打靶法求边值的matlab实现

打靶法求边值的matlab实现,第1张

参考代码:

% 解的初始估计

solinit = bvpinit(linspace(0,1,100),[1 -50])

 

% BVP问题求解

ode = @(t,x) [x(2) -pi^2/4*(1-x(1))]

bc = @(ya,yb)[ya(2)-pi yb(2)+pi/2]

sol = bvp4c(ode,bc,solinit)

 

% 结果绘图

t=sol.x

vars={'x', 'x'''}

for i=1:length(vars)

    subplot(2,1,i)

    plot(t,sol.y(i,:))

    xlabel('t')

    ylabel(vars{i})

end

4个微分方程应该只有4个约束(包括初值或终值)吧?

但按照你给的初值和终值,一共有6个约束。

可以这样理解:如果4个初值都给定了,那么微分方程就有充足的条件可以直接求解了,不一定保证终值符合你的要求。

以你的描述来看,t的范围就是2.40425到2.61915。

ode只能求解微分方程的初值问题

若要同时考虑初值、终值,那这样的问题叫微分方程的边值问题。

边值问题的求解有多种方法,打靶法比较常见,还有就是直接调用Matlab的求解器,详情请百度。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8164042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存