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常用内置函数总结
Feb 08 Python
Python实现从百度API获取天气的方法
Mar 11 Python
Python标准库之Sys模块使用详解
May 23 Python
python实现网站的模拟登录
Jan 04 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
对Python 3.5拼接列表的新语法详解
Nov 08 Python
使用Python和Prometheus跟踪天气的使用方法
May 06 Python
Python 脚本实现淘宝准点秒杀功能
Nov 13 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
用Python自动清理系统垃圾的实现
Jan 18 Python
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
Jun 22 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 is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
常用的js验证和数据处理总结
2016/08/02 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
jQuery Collapse1.1.0折叠插件简单使用
2017/08/28 jQuery
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python3.X 线程中信号量的使用方法示例
2017/07/24 Python
python http接口自动化脚本详解
2018/01/02 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
python中partial()基础用法说明
2018/12/30 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
Django REST 异常处理详解
2020/07/15 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
结婚喜宴家长答谢词
2014/01/15 职场文书
电子银行营销方案
2014/02/22 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
项目经理任命书
2014/06/04 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
MySQL池化框架学习接池自定义
2022/07/23 MySQL