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中正则表达式的用法实例汇总
Aug 18 Python
python实现的简单抽奖系统实例
May 22 Python
python中defaultdict的用法详解
Jun 07 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 Python
pymongo中聚合查询的使用方法
Mar 22 Python
Django实现文件上传和下载功能
Oct 06 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
基于h5py的使用及数据封装代码
Dec 26 Python
如何使用Python提取Chrome浏览器保存的密码
Jun 09 Python
Python中super().__init__()测试以及理解
Dec 06 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 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学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
只需一行代码,轻松实现一个在线编辑器
2013/11/12 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
jQuery中delegate()方法的用法详解
2016/10/13 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
ES6解构赋值实例详解
2017/10/31 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
介绍Python的@property装饰器的用法
2015/04/28 Python
Python实现删除文件但保留指定文件
2015/06/21 Python
python对DICOM图像的读取方法详解
2017/07/17 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
银行实习人员自我鉴定
2013/09/22 职场文书
应届生幼儿园求职信
2013/11/12 职场文书
中学自我评价
2014/01/31 职场文书
餐饮部总监岗位职责范文
2014/02/13 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
护士求职简历自我评价
2015/03/10 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
Golang生成Excel文档的方法步骤
2021/06/09 Golang
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python