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 相关文章推荐
pycharm 使用心得(一)安装和首次使用
Jun 05 Python
Python和GO语言实现的消息摘要算法示例
Mar 10 Python
Python的IDEL增加清屏功能实例
Jun 19 Python
python中字符串变二维数组的实例讲解
Apr 03 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
对Pytorch神经网络初始化kaiming分布详解
Aug 18 Python
python颜色随机生成器的实例代码
Jan 10 Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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实现GIF图片验证码
2015/11/04 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
2018/03/12 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
2014/05/07 Javascript
JavaScript 作用域链解析
2014/11/13 Javascript
jQuery中:password选择器用法实例
2015/01/03 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
详解js中的apply与call的用法
2016/07/30 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
python实现自动发送报警监控邮件
2018/06/21 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
Python timeit模块的使用实践
2020/01/13 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
大学生护理专业自荐信
2013/10/03 职场文书
工作交流会欢迎词
2014/01/12 职场文书
服务口号大全
2014/06/11 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏