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 11 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
python搭建服务器实现两个Android客户端间收发消息
Apr 12 Python
Python登录注册验证功能实现
Jun 18 Python
浅谈Python的list中的选取范围
Nov 12 Python
Python之列表实现栈的工作功能
Jan 28 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
django使用JWT保存用户登录信息
Apr 22 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 db类库进行数据库操作
2009/03/19 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
详解Bootstrap插件
2016/04/25 Javascript
轻松掌握JavaScript状态模式
2016/09/07 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
详解Angular的8个主要构造块
2017/06/20 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
js中url对象化管理分析
2017/12/29 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
python3.6的venv模块使用详解
2018/08/01 Python
python中的colorlog库使用详解
2019/07/05 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
西式结婚主持词
2014/03/14 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
小学课外活动总结
2014/07/09 职场文书
酒店端午节活动方案
2014/08/26 职场文书
高三语文教学反思
2016/02/16 职场文书