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去除列表中重复元素的方法
Mar 20 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
Apr 02 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
浅谈Django中view对数据库的调用方法
Jul 18 Python
如何为Python终端提供持久性历史记录
Sep 03 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
Django如何使用redis作为缓存
May 21 Python
Python爬虫之爬取二手房信息
Apr 27 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
实用函数4
2007/11/08 PHP
浅析php单例模式
2014/11/25 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
json 入门基础教程 推荐
2009/10/31 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
Vue表单实例代码
2016/09/05 Javascript
浅谈Angular中ngModel的$render
2016/10/24 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
Python编程之字符串模板(Template)用法实例分析
2017/07/22 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
Servlet如何得到客户端机器的信息
2014/10/17 面试题
主持人演讲稿范文
2013/12/28 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
投标授权委托书范文
2014/08/02 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
小学生优秀评语
2014/12/29 职场文书
单位考核鉴定意见
2015/06/05 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL