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 相关文章推荐
django 自定义用户user模型的三种方法
Nov 18 Python
Python模拟用户登录验证
Sep 11 Python
python中的常量和变量代码详解
Jul 25 Python
Python3.4学习笔记之列表、数组操作示例
Mar 01 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
python数据挖掘需要学的内容
Jun 23 Python
详解python中的time和datetime的常用方法
Jul 08 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
python3.x 生成3维随机数组实例
Nov 28 Python
matplotlib实现显示伪彩色图像及色度条
Dec 07 Python
Python深度学习之Pytorch初步使用
May 20 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
用Flash图形化数据(一)
2006/10/09 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP引用返回用法示例
2016/05/28 PHP
php中加密解密DES类的简单使用方法示例
2020/03/26 PHP
js 禁用浏览器的后退功能的简单方法
2008/12/10 Javascript
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
checkbox使用示例
2013/08/23 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
详解如何使用webpack打包JS
2018/06/21 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
js实现带有动画的返回顶部
2020/08/09 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
[03:40]2014DOTA2国际邀请赛 B神专访:躲箭真的很难
2014/07/13 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
在Python中的Django框架中进行字符串翻译
2015/07/27 Python
python3连接MySQL数据库实例详解
2018/05/24 Python
django页面跳转问题及注意事项
2019/07/18 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
房地产推广策划方案
2014/05/19 职场文书
家庭教育教师培训学习体会
2016/01/14 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书