数值积分原理与应用
2023-09-11 14:20:52 时间
1 理论
计算定积分时,可以通过微元法逼近,如下:
若取值均匀,公式如下:
通过上述公式可以看到,定积分的值可以通过取样点函数值的线性组合得到。当取样点已经确定时,定积分的精度取决于每个取样点所分配的权值。梯形公式、Simpson公式、Cotes公式、Romberg公式正是通过调整权值来逐步逼近积分值。
(1)复合梯形公式
(2) Simpson公式
(3)Cotes公式
(4)Romberg公式
2 实验
借助如下公式,使用 Romberg 求积公式计算
import numpy as np
def fun(x):
return 4/(1+x*x)
def romberg(a,b,m): # m>=3
p=np.zeros(m+1,dtype='int32') #p[i]=2**i
p[0]=1;
for i in range(1,m+1):
p[i]=p[i-1]*2
n=p[m]
d=b-a
f=np.random.uniform(a,b,n+1) #保存函数值
for i in range(n+1):
x=a+d/n*i
f[i]=fun(x)
print("f=\n",f)
T=np.random.uniform(a,b,m) #保存梯度值
T[0]=(f[0]+f[n])/2
for i in range(1,m):
s=0.0
for k in np.arange(1,p[i-1]+1):
s+=f[(2*k-1)*p[m-i]]
T[i]=T[i-1]/2+d/p[i]*s
print("T=\n",T)
S=np.random.uniform(a,b,m-1)
for i in range(m-1):
S[i]=(4*T[i+1]-T[i])/3 #Simpson公式
print("S=\n",S)
C=np.random.uniform(a,b,m-2)
for i in range(m-2):
C[i]=(16*S[i+1]-S[i])/15 #Cotes公式
print("C=\n",C)
R=np.random.uniform(a,b,m-3)
for i in range(m-3):
R[i]=(64*C[i+1]-C[i])/63 #Romberg公式
print("R=\n",R)
return R[-1]
s=romberg(0,1,8)
T=
[3. 3.1 3.13117647 3.13898849 3.14094161 3.14142989
3.14155196 3.14158248]
S=
[3.13333333 3.14156863 3.1415925 3.14159265 3.14159265 3.14159265
3.14159265]
C=
[3.14211765 3.14159409 3.14159266 3.14159265 3.14159265 3.14159265]
R=
[3.14158578 3.14159264 3.14159265 3.14159265 3.14159265]
从运行结果可以看出,在取样点相同的情况下,梯形公式、Simpson公式、Cotes公式、Romberg公式的精度依次增加。
相关文章
- asp.net 高级应用 特性Attribute ( 声明,原理,扩展,AOP)
- URP从原理到应用——进阶篇
- 网络通信原理与实战应用
- 小波变换理论及应用综述
- Android应用性能优化最佳实践.2.1 Android系统显示原理
- 《数据库技术原理与应用教程第2版》——第1章 数据、数据管理与数据处理1.1概述
- 《数据库技术原理与应用教程第2版》——2.3数据库系统的特点
- 《数据库技术原理与应用教程第2版》——3.3现实世界
- 闭包的定义,原理,应用场景,优点,缺点
- C# 实现WEBSOCKET聊天应用示例
- 加速度传感器的原理和应用-手机翻转、失重检测、运动检测、位置识别
- AOP切面编程在android上的应用
- SwiftUI 数字显示格式应用大全实现数字格式化为货币值、百分比值、序数值(Swift NumberFormatter 应用案例)
- Qt编写地图综合应用48-地球模式、三维模式、地铁模式
- Qt编写地图综合应用25-echart动态交互
- 《数据库技术原理与应用教程(第2版)》——1.2 数据及其特性
- 《Linux嵌入式实时应用开发实战(原书第3版)》——2.6 资源
- 开发新聊天应用 谷歌却没放弃Hangouts
- vlc的应用之七:用vlc做单播,组播及点播服务器【转】
- 【快应用】text组件里的文字很多,旁边的div样式会被拉伸如何解决
- 数据库原理及MySQL应用 | 事件
- 软件Web测试中应用性能测试的探析
- 数据库原理及MySQL应用 | 数据表操作
- kubernetes应用部署原理
- 【Unity3D】阴影原理及应用
- Activiti 多个并发子流程的应用
- 使用flink Table &Sql api来构建批量和流式应用(1)Table的基本概念
- 深入理解 Linux 零拷贝以及 Linux 中 I/O 的底层原理,在kafka、nginx、golang等等各种文件传输场景中不同的优化手段和实际应用
- kalman滤波原理及应用Matalb仿真学习笔记2