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实现进程间通信简单实例
Jul 23 Python
python标准算法实现数组全排列的方法
Mar 17 Python
如何利用python查找电脑文件
Apr 27 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
树莓派实现移动拍照
Jun 22 Python
python3获取当前目录的实现方法
Jul 29 Python
Python通用唯一标识符uuid模块使用案例
Sep 10 Python
python boto和boto3操作bucket的示例
Oct 30 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 Python
关于python爬虫应用urllib库作用分析
Sep 04 Python
Python 中 Shutil 模块详情
Nov 11 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环境――Appserv
2006/12/13 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php获取301跳转URL简单实例
2013/12/16 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
thinkphp3.2同时连接两个数据库的简单方法
2019/08/13 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
jquery获取radio值(单选组radio)
2014/10/16 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
Django实现快速分页的方法实例
2017/10/22 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
python 字典中取值的两种方法小结
2018/08/02 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
Python常用断言函数实例汇总
2020/11/30 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
什么是Deployment descriptors;都有什么类型的部署描述符
2015/07/28 面试题
应届生煤化工求职信
2013/10/21 职场文书
优秀经理获奖感言
2014/03/04 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
支部书记四风问题对照检查材料
2014/10/04 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
python基础之函数的定义和调用
2021/10/24 Python