Python实现数值积分方式


Posted in Python onNovember 20, 2019

原理:

利用复化梯形公式,复化Simpson公式,计算积分。

步骤:

Python实现数值积分方式

import math

"""测试函数"""
def f(x,i):
  if i == 1:
    return (4 - (math.sin(x)) ** 2) ** 0.5
  if i == 2:
    if x == 0:
      return 1
    else:
      return math.sin(x) / x
  if i == 3:
    return (math.exp(x)) / (4 + x ** 2)
  if i == 4:
    return math.log(1+x,math.e) / (1 + x ** 2)

"""打印显示函数"""   
def p(i,n):
  return "第" + str(i) + "题,n=" + str(n) + "时的积分值为:"

"""复化Simpson函数"""
def Simpson(a, b, n, i):
  h = (b - a) / (2 * n)
  F0 = f(a,i) + f(b,i)
  F1 = 0
  F2 = 0
  for j in range(1,2 * n):
    x = a + (j * h)
    if j % 2 == 0:
      F2 = F2 + f(x,i)
    else:
      F1 = F1 + f(x,i)
  SN = (h * (F0 + 2 * F2 + 4 * F1)) / 3
  print("复化Simpson函数" + p(i,n) + str("%-10.7f"%(SN)))
  return SN

def T(a, b, n, i):
  h = (b - a) / n
  F0 = f(a,i) + f(b,i)
  F = 0
  for j in range(1,n):
    x = a + (j * h)
    F = F + f(x,i)
  SN = (h * (F0 + 2 * F)) / 2
  print("复化梯形函数" + p(i,n) + str("%-10.7f"%(SN)))
  return SN

def SimpsonTimes(x):
  n = 1
  y = Simpson(0, math.pi/4, n, 1)
  while(abs(y - 1.5343916) > x):
    n = n + 1
    y = Simpson(0, math.pi/4, n, 1)
  else:
    return n

def Times(x):
  n = 1
  y = T(0, math.pi/4, n, 1)
  while(abs(y - 1.5343916) > x):
    n = n + 1
    y = T(0, math.pi/4, n, 1)
  else:
    return n


"""
  测试部分  
"""
Simpson(0, math.pi/4, 10, 1)
Simpson(0, 1, 10, 2)
Simpson(0, 1, 10, 3)
Simpson(0, 1, 10, 4)
Simpson(0, math.pi/4, 20, 1)
Simpson(0, 1, 20, 2)
Simpson(0, 1, 20, 3)
Simpson(0, 1, 20, 4)

T(0, math.pi/4, 10, 1)
T(0, 1, 10, 2)
T(0, 1, 10, 3)
T(0, 1, 10, 4)
T(0, math.pi/4, 20, 1)
T(0, 1, 20, 2)
T(0, 1, 20, 3)
T(0, 1, 20, 4)

print("复化梯形函数求解第一问,精度为0.00001时需要" + str(Times(0.00001)) + "个步数")
print("复化Simpson函数求解第一问,精度为0.00001时需要" + str(SimpsonTimes(0.00001)) + "个步数")
print("复化梯形函数求解第一问,精度为0.000001时需要" + str(Times(0.000001)) + "个步数")
print("复化Simpson函数求解第一问,精度为0.000001时需要" + str(SimpsonTimes(0.000001)) + "个步数")

以上这篇Python实现数值积分方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用wxpython开发简单记事本的方法
May 20 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
Python科学计算之NumPy入门教程
Jan 15 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
django中使用POST方法获取POST数据
Aug 20 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
使用Nibabel库对nii格式图像的读写操作
Jul 01 Python
TensorFlow Autodiff自动微分详解
Jul 06 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
Jul 07 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 #Python
python用quad、dblquad实现一维二维积分的实例详解
Nov 20 #Python
利用python实现AR教程
Nov 20 #Python
使用python实现画AR模型时序图
Nov 20 #Python
Python笔记之工厂模式
Nov 20 #Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 #Python
将python2.7添加进64位系统的注册表方式
Nov 20 #Python
You might like
全国FM电台频率大全 - 4 山西省
2020/03/11 无线电
php 分页函数multi() discuz
2009/06/21 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
基于JavaScript实现轮播图代码
2016/07/14 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
vue实现微信分享功能
2018/11/28 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
Python基本语法经典教程
2016/03/11 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Python实现数据可视化看如何监控你的爬虫状态【推荐】
2018/08/10 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
浅析PEP570新语法: 只接受位置参数
2019/10/15 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
python检查目录文件权限并修改目录文件权限的操作
2020/03/11 Python
解决django FileFIELD的编码问题
2020/03/30 Python
python3中布局背景颜色代码分析
2020/12/01 Python
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
大四本科生的自我评价
2013/12/30 职场文书
企业承诺书怎么写
2014/05/24 职场文书
2014年业务工作总结
2014/11/17 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android