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通过索引遍历列表的方法
May 04 Python
python实现复制整个目录的方法
May 12 Python
Python实现提取谷歌音乐搜索结果的方法
Jul 10 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
python 调用c语言函数的方法
Sep 29 Python
Python 一键制作微信好友图片墙的方法
May 16 Python
python框架flask表单实现详解
Nov 04 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
Python实现图片添加文字
Nov 26 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 Python
Python list去重且保持原顺序不变的方法
Apr 03 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/12/23 PHP
PHP 模拟$_PUT实现代码
2010/03/15 PHP
谈谈PHP中substr和substring的正确用法及相关参数的介绍
2015/12/16 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
简述Jquery与DOM对象
2015/07/10 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
JavaScript 事件对内存和性能的影响
2017/01/22 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
python 获取字典键值对的实现
2020/11/12 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
澳大利亚最便宜的网上药房:Chemist Warehouse
2020/01/30 全球购物
称象教学反思
2014/02/03 职场文书
个人授权委托书范文
2014/09/21 职场文书
导游词欢迎词
2015/02/02 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python