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中类的一些方法分析
Sep 25 Python
python爬取淘宝商品详情页数据
Feb 23 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
python 阶乘累加和的实例
Feb 01 Python
详解Python3 基本数据类型
Apr 19 Python
elasticsearch python 查询的两种方法
Aug 04 Python
Python FTP文件定时自动下载实现过程解析
Nov 12 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
Python模块相关知识点小结
Mar 09 Python
Python实现读取并写入Excel文件过程解析
May 27 Python
Python3 类型标注支持操作
Jun 02 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开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
PHP精确计算功能示例
2016/11/29 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
jQuery链式调用与show知识浅析
2016/05/11 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
浅谈Vue Element中Select下拉框选取值的问题
2018/03/01 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
vue 实现setInterval 创建和销毁实例
2020/07/21 Javascript
Python实现购物程序思路及代码
2017/07/24 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python获取交互式ssh shell的方法
2019/02/14 Python
Python Http请求json解析库用法解析
2020/11/28 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
旷课检讨书大全
2014/01/21 职场文书
党员教师工作决心书
2014/03/13 职场文书
政治学求职信
2014/06/03 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
详解Python中__new__方法的作用
2022/03/31 Python