欧拉方法不稳定性。为什么?

计算科学 龙格库塔 数字 显式方法
2021-12-10 19:12:54

我目前喜欢将编写计算代码作为一种爱好。现在我已经制定了一个欧拉方法,结果非常好,最多上,不稳定开始出现。我可以知道为什么会这样吗?方程如下: x=1x=1

df=x2y,y(0)=1

#Euler Method
import numpy as np
import matplotlib.pyplot as plt
#Specify Step Size:
h=float(input("Size of h:"))
#Key in X value you want to obtain y(x1):
x1=float(input("input X to get Y:"))
#Number of steps:
n=int((x1)/h)+1
#Creation of array table
A=np.zeros((n,3))
A[0]=[1,0,1]
for i in range(1,n):
#Evaluating values of y:
    A[i,0]=i+1
    df=-(A[i-1,1]**2)/A[i-1,2]
    A[i,2]=A[i-1,2]+h*df
    A[i,1]=A[i-1,1]+h
print(A)
plt.plot(A[:,1], A[:,2], label='Approximation')
plt.show()

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

1个回答

如果我们取你的 ODE,两边都乘以并积分,我们看到解看起来像 以你的初始条件,你的真实轨迹是 这只是域的真正价值,因此您在之后看到奇怪的行为也就不足为奇了,因为您的值越来越小并且您的导数越来越奇异(即走向无穷大)。穿过 -positive 和

dydx=x2y,
y
y2=C23x3.
y=123x.
<x<=1.5x=1yy=0yy负解,因此产生振荡。

如果您想做得更好,您可以尝试一种具有自适应时间步长的隐式方法,但您通常会尝试在数值上逼近一个表现不佳的函数。