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使用迭代器捕获Generator返回值的方法
Apr 05 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 Python
Python实现检测文件MD5值的方法示例
Apr 11 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
python制作填词游戏步骤详解
May 05 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
使用python动态生成波形曲线的实现
Dec 04 Python
解析PyCharm Python运行权限问题
Jan 08 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
May 17 Python
Python 代码调试技巧示例代码
Aug 11 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 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对文件夹递归执行chmod命令的方法
2015/06/19 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
用jquery等比例控制图片宽高的具体实现
2014/01/28 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
Python实现字典去除重复的方法示例
2017/07/31 Python
名片管理系统python版
2018/01/11 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
Python连接Redis的基本配置方法
2018/09/13 Python
python实现最大优先队列
2019/08/29 Python
python随机生成库faker库api实例详解
2019/11/28 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
Html5插件教程之添加浏览器放大镜效果的商品橱窗
2016/01/07 HTML / CSS
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
暑假实习求职信范文
2013/09/22 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
电视购物广告词
2014/03/19 职场文书
奥巴马开学演讲稿
2014/05/15 职场文书
小学班主任培训方案
2014/06/04 职场文书
打架赔偿协议书范本
2014/10/26 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书
数学复习课教学反思
2016/02/18 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server