二阶 ode 的有限差分是的' 2+是是的''+2X是的是的'− 0.1是的2= 0y′2+yy″+2xyy′−0.1y2=0y'(1)=0和y 是的'( 1 ) = 0y′(1)=0( 是的( 1 ) = 1y(1)=1

计算科学 matlab 有限差分 边界条件
2021-11-30 08:24:00

如何求解二阶非线性 ODE

y2+yy+2xyy0.1y2=0
取决于y(1)=0y(1)=1在区间0<x1上。

我将方程转换为 PDE时的稳态解,这是 ODE 的解。我在 MATLAB 中使用了显式有限差分方案。但它似乎没有给出正确的解决方案。y2+yy+2xyy0.1y2=ytt

我在 MATLAB 中实现边界条件时遇到问题。

如果您能帮我解决这个问题,我将不胜感激。还提到任何其他数值方法都会很棒。谢谢。

2个回答

您在 x=1 时有两个条件,我希望这是正确的,在这种情况下您会遇到初始值问题。将其写为一阶系统z=y

z=y/10z2/y2z/x,y=z
初始条件 的 ode 求解器求解当您接近时,您将面临除以零的问题,除非也有可能变为零。你有理由期望你的方程应该有非负解吗?
y(1)=1,z(1)=0
x=1x=0x=0z0y

有时,pdes 会导致解决方案不稳定(围绕圆柱体流动),因此您面临的问题是会出现无限多的解决方案。如果必须达到一个特定的解决方案,则此类问题不适用于时间离散化。我的意思是限制 没有任何意义。

limty(t)

相反,您可以通过设置来线性化问题(牛顿法): 并从线性问题 中求解应用均匀的狄利克雷 BC。

yn+1=yn+δyn
δyn

请记住,中的非线性项可以忽略,因为它应该很小。δyn

如果在可能的解附近足够平滑,牛顿法将完成二次收敛。y