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的Django框架上部署ORM库的教程
Apr 20 Python
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
python+opencv识别图片中的圆形
Mar 25 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
python实现微信小程序自动回复
Sep 10 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
Python assert关键字原理及实例解析
Dec 13 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
Python爬虫开发与项目实战
Dec 16 Python
Python机器学习之PCA降维算法详解
May 19 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
php检测url是否存在的方法
2015/04/14 PHP
PHP设置进度条的方法
2015/07/08 PHP
php面向对象编程self和static的区别
2016/05/08 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
JS实现自动变化的导航菜单效果代码
2015/09/09 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
js 实现碰撞检测的示例
2020/10/28 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Python程序设计入门(3)数组的使用
2014/06/16 Python
Python性能优化的20条建议
2014/10/25 Python
Python实现多线程抓取妹子图
2015/08/08 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
pandas实现选取特定索引的行
2018/04/20 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python绘制随机网络图形示例
2019/11/21 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
python和php哪个容易学
2020/06/19 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
2014年自我评价
2014/01/04 职场文书
保安岗位职责
2014/02/21 职场文书
新闻学专业求职信
2014/07/28 职场文书