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制作最美应用的爬虫
Oct 28 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
Python 脚本获取ES 存储容量的实例
Dec 27 Python
Python实现FLV视频拼接功能
Jan 21 Python
Python填充任意颜色,不同算法时间差异分析说明
May 16 Python
python实现二分类和多分类的ROC曲线教程
Jun 15 Python
Python性能分析工具py-spy原理用法解析
Jul 27 Python
用python发送微信消息
Dec 21 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
也谈 PHP 和 MYSQL
2006/10/09 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
Javascript编写2048小游戏
2015/07/07 Javascript
jQuery操作DOM_动力节点Java学院整理
2017/07/04 jQuery
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
AngularJS自定义表单验证功能实例详解
2018/08/24 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[20:30]职业巡回赛回顾
2018/08/09 DOTA
如何基于matlab相机标定导出xml文件
2020/11/02 Python
Python 列表反转显示的四种方法
2020/11/16 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
opencv实现图像几何变换
2021/03/24 Python
应届毕业生个人求职自荐信
2014/01/06 职场文书
四风存在的原因分析
2014/02/11 职场文书
中介业务员岗位职责
2014/04/09 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
怎样写辞职信
2015/02/27 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
SpringBoot详解执行过程
2022/07/15 Java/Android