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中使用PIL模块处理图像的教程
Apr 29 Python
python实现批量监控网站
Sep 09 Python
Python实现的双色球生成功能示例
Dec 18 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
django初始化数据库的实例
May 27 Python
Python基于多线程实现ping扫描功能示例
Jul 23 Python
3分钟学会一个Python小技巧
Nov 23 Python
Form表单及django的form表单的补充
Jul 25 Python
Python实现不规则图形填充的思路
Feb 02 Python
python 星号(*)的多种用途
Sep 21 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
mysql时区问题
2008/03/26 PHP
PHP 字符串分割和比较
2009/10/06 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php中常量DIRECTORY_SEPARATOR用法深入分析
2014/11/14 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
微信支付开发订单查询实例
2016/07/12 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
php对mongodb的扩展(小试牛刀)
2012/11/11 Javascript
js自动生成对象的属性示例代码
2013/10/28 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
详解Bootstrap的aria-label和aria-labelledby应用
2016/01/04 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
python对数组进行反转的方法
2015/05/20 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python实现学生成绩管理系统
2020/04/05 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
python3的pip路径在哪
2020/06/23 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
中科软测试工程师面试题
2012/06/16 面试题
市场部经理岗位职责
2014/04/10 职场文书
2014年工程师工作总结
2014/11/25 职场文书
2016年公司新年寄语
2015/08/17 职场文书
MySQL RC事务隔离的实现
2022/03/31 MySQL