【数值计算方法】常微分方程数值解-数值实验
第一题
y=y(x)的数值解
第二题
\(x-\varPhi(x)\)的数值解
第三题
在梯形公式中当采用简单迭代格式求解y_{n+1}时,h=0.2,0.25步长过大.
题中t为x,数值解为:
第四题
采用欧拉公式,改进欧拉公式,4阶龙格库塔公式,梯形公式求解y(x)的数值解,对比精度.
n=5:
n=50:
n=500:
n=5000:
code
# %% from formu_lib import * import numpy as np import matplotlib.pyplot as plt def f(x:float,y:float)->float: return -1/(x*x)-y/x-y**2 y0,a,b,n=-1,1,2,50 x1,y1=EulerMethod(f,y0,a,b,n) x2,y2=TrapeEuler(f,y0,a,b,n) x3,y3=ImproveEulerMethod(f,y0,a,b,n) x4,y4=RungeKuttaMethods(f,y0,a,b,n) plt.plot(x1,y1,label='Euler') plt.plot(x2,y2,label='Trapezoidal Euler') plt.plot(x3,y3,label='Improved Euler') plt.plot(x4,y4,label='Runge-Kutta') plt.xlabel('x') plt.ylabel('y') plt.title('Numerical sols') plt.legend() plt.show() # %% from formu_lib import * import numpy as np import matplotlib.pyplot as plt def f2(x:float,y:float)->float: def phi(t:float)->float: return np.exp(-t*t/2.0) return (1/np.sqrt(2*np.pi))*Integ1dGuassLegendre(phi,0,x)+0.5 y0,a,b,n=0.5,0,5,80 h=(b-a)/n x21=[a+i*h for i in range(n+1)] y21=[] for x in x21: y21.append(f2(x,y0)) plt.plot(x21,y21,label='Runge-Kutta') plt.xlabel('x') plt.ylabel('y') plt.title('Numerical sols') plt.legend() plt.show() # %% from formu_lib import * import numpy as np import matplotlib.pyplot as plt def f3(x:float,y:float)->float: return (5.0*np.exp(5*x))*(y-x)*(y-x)+1.0 def extra_f3(x:float)->float: return x-np.exp(-5*x) y0,a,b=-1,0,1.0 n1,n2=50,100 h=(b-a)/n1 x=[a+i*h for i in range(n1+1)] y=[extra_f3(x[i]) for i in range(n1+1)] plt.plot(x,y,label='Extra function',marker='o') x31,y31=RungeKuttaMethods(f3,y0,a,b,n1) x32,y32=RungeKuttaMethods(f3,y0,a,b,n2) x33,y33=TrapeEuler(f3,y0,a,b,n1) x34,y34=TrapeEuler(f3,y0,a,b,n2) plt.plot(x31,y31,label=f'Runge-Kutta n={n1}') plt.plot(x32,y32,label=f'Runge-Kutta n={n2}') plt.plot(x33,y33,label=f'Trapezoidal Euler n={n1}') plt.plot(x34,y34,label=f'Trapezoidal Euler n={n2}') plt.xlabel('x') plt.ylabel('y') plt.title('Numerical sols') plt.legend() plt.show()
本文来自博客园,作者:FE-有限元鹰,转载请注明原文链接:https://www.cnblogs.com/aksoam/p/18360790
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律