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中执行shell命令的几个方法小结
Sep 18 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
深入学习python的yield和generator
Mar 10 Python
Python使用正则表达式抓取网页图片的方法示例
Apr 21 Python
Python3.4编程实现简单抓取爬虫功能示例
Sep 14 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
python实现批量修改文件名
Mar 23 Python
keras的backend 设置 tensorflow,theano操作
Jun 30 Python
python爬虫泛滥的解决方法详解
Nov 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
PHP中的正规表达式(一)
2006/10/09 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
smarty缓存用法分析
2014/12/16 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP不使用递归的无限级分类简单实例
2016/11/05 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
拖动时防止选中
2017/02/03 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python妹子图简单爬虫实例
2015/07/07 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
2019/06/27 Python
Python多版本开发环境管理工具介绍
2019/07/03 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
python解包概念及实例
2021/02/17 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
工商行政管理专业求职书
2014/05/23 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技