python实现数值积分

目录

1、求解问题

2、求解原理

3、python实现


1、求解问题

2、求解原理

高斯-勒让德数值积分是一种有效的数值积分方法,它结合了高斯点和勒让德函数来计算一维函数的积分。

高斯-勒让德求积公式在给定的积分区间[a, b]上,通过选择一些特定的点(称为高斯点),并使用与这些点相关的权重系数,来计算积分的近似值。这些高斯点和权重系数是通过将给定的函数展开为勒让德多项式,并使用特定的求积公式来得到的。

高斯-勒让德求积公式具有很高的精度,特别是对于一些难以使用其他方法积分的函数。它的优点在于,与其他的数值积分方法相比,它通常能够提供更精确的结果,而且对于某些函数,它的计算速度也非常快。

高斯-勒让德数值积分的原理基于高斯积分和勒让德多项式。高斯积分是一种精度很高的插值型数值积分方法,它通过选择一些特定的点(称为高斯点),并使用与这些点相关的权重系数,来计算积分的近似值。勒让德多项式是一类定义在区间[-1, 1]上的多项式,它们可以被展开为无穷级数,也可以被用来近似计算一些函数的积分。

通过将给定的函数展开为勒让德多项式,并使用特定的求积公式,可以将高斯点和权重系数计算出来,从而得到积分的近似值。这种方法适用于各种不同类型的函数,包括多变量函数、三角函数、指数函数等等。

3、python实现

from __future__ import division
import numpy as np
#定义一重积分函数
def gl_quad1d(fun, n, x_lim=None, args=()):if x_lim is None:a, b = -1, 1else:a, b = x_lim[0], x_lim[1]
​if not callable(fun):return (b - a) * fun
​else:loc, w = np.polynomial.legendre.leggauss(n)s = (1 / 2. * (b - a) * fun((b - a) * v / 2. + (a + b) / 2., *args) * w[i]for i, v in enumerate(loc))return sum(s)
​
#定义二重积分函数
def gl_quad2d(fun, n, x_lim=None, y_lim=None, args=()):if x_lim is None:a, b = -1, 1else:a, b = x_lim[0], x_lim[1]if y_lim is None:c, d = -1, 1else:c, d = y_lim[0], y_lim[1]
​if not callable(fun):return (b - a) * (d - c) * funelse:loc, w = np.polynomial.legendre.leggauss(n)s = (1 / 4. * (b - a) * (d - c) * fun(((b - a) * v1 / 2. + (a + b) / 2.,(d - c) * v2 / 2. + (c + d) / 2.), *args) * w[i] * w[j]for i, v1 in enumerate(loc)for j, v2 in enumerate(loc))return sum(s)
​
#定义三重积分函数
def gl_quad3d(fun, n, x_lim=None, y_lim=None, z_lim=None, args=()):if x_lim is None:a, b = -1, 1else:a, b = x_lim[0], x_lim[1]
​if y_lim is None:c, d = -1, 1else:c, d = y_lim[0], y_lim[1]if z_lim is None:e, f = -1, 1else:e, f = z_lim[0], z_lim[1]
​if not callable(fun):return (b - a) * (d - c) * (f - e) * funelse:loc, w = np.polynomial.legendre.leggauss(n)s = (1 / 8. * (b - a) * (d - c) * (f - e) * fun(((b - a) * v1 / 2. + (a + b) / 2.,(d - c) * v2 / 2. + (c + d) / 2.,(f - e) * v3 / 2. + (e + f) / 2.), *args) * w[i] * w[j] * w[k]for i, v1 in enumerate(loc)for j, v2 in enumerate(loc)for k, v3 in enumerate(loc))return sum(s)
​
​
def fun1(x):return 1./(1+x**2)
def fun2(x):return (1+x[0]**2+x[1])**0.5
def fun3(x, a, b):return a * x[0] * x[1] * np.e ** (b * x[2])
​
​
if __name__ == "__main__":res1=gl_quad1d(fun1,5)res2=gl_quad2d(fun2, 3)res3=gl_quad3d(fun3, 3, x_lim=[0,1], y_lim=[-1,0], args=(1,1))print(res1)print(res2)print(res3)
​

1.5711711711711713

4.443748541600919

-0.5875842321700031

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/222914.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年最新Dev-C++下载安装以及C语言环境搭建教程(C语言入门)

文章目录 写在前面C语言简介Dev-C简介Dev-C下载安装Dev-C使用教程 写在后面 写在前面 2023年最新Dev-C下载安装以及C语言环境搭建教程,快来看看吧! C语言简介 C语言是一种通用的高级程序设计语言,由美国计算机科学家Dennis Ritchie于20世纪…

佳易王钟表维修管理系统软件教程,手表保养维修软件

佳易王钟表维修管理系统软件教程,手表保养维修软件 软件简介: 佳易王钟表养护维修管理系统V16.3,录入维修订单,维修进度查询,会员活动方案,打印服务报价维修单,取表结账,导入手表照…

眼见非实-MISC-bugku-解题步骤

——CTF解题专栏—— 题目信息: 题目:眼见非实 作者:harry 提示:无 解题附件: 解题思路: 眼见非实???难道要用手摸一下?(开玩笑.jpg&#xff…

springboot实现数据脱敏

springboot实现数据脱敏 怎么说呢,写着写着发觉 ”这写的什么玩意“ 。 总的来说就是,这篇文章并不能解决数据脱敏问题,但以下链接可以。 SpringBoot中利用自定义注解优雅地实现隐私数据脱敏 然后回到本文,本来是想基于AOP代理&am…

C#,《小白学程序》第二十课:大数的加法(BigInteger Add)

大数的&#xff08;加减乘除&#xff09;四则运算、阶乘运算。 乘法计算包括小学生算法、Karatsuba和Toom-Cook3算法。 重复了部分 19 课的代码。 1 文本格式 using System; using System.Linq; using System.Text; using System.Collections.Generic; /// <summary>…

React入门使用 (官方文档向 Part1)

文章目录 React组件:万物皆组件 JSX: 将标签引入 JavaScriptJSX 规则1. 只能返回一个根元素2. 标签必须闭合3. 使用驼峰式命名法给 ~~所有~~ 大部分属性命名&#xff01;高级提示&#xff1a;使用 JSX 转化器 在 JSX 中通过大括号使用 JavaScript使用引号传递字符串使用大括号&…

8.统一异常处理 + 统一记录日志

目录 1.统一异常处理 2.统一记录日志 1.统一异常处理 在 HomeController 类中添加请求方法&#xff08;服务器发生异常之后需要统一处理异常&#xff0c;记录日志&#xff0c;然后转到 500 页面&#xff0c;需要人工处理重定向到 500 页面&#xff0c;提前把 500 页面请求访问…

顶级Mac数据恢复工具—— 13个 Mac 数据恢复程序榜单

如果您点击此博客&#xff0c;首先可能是您不小心格式化了外部或内部存储&#xff0c;无论是 SD卡还是硬盘&#xff0c;其次&#xff0c;您收到了一些错误消息&#xff0c;表明您丢失了所有内容&#xff0c;现在您已经精疲力竭了的形状。原因可能有多种&#xff1a;您不小心删除…

linux 搭建Nginx网页(编译安装)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…

探索 Linux vim/vi 编辑器:介绍、模式以及基本操作演示

&#x1f490;作者&#xff1a;insist-- &#x1f490;个人主页&#xff1a;insist-- 的个人主页 理想主义的花&#xff0c;最终会盛开在浪漫主义的土壤里&#xff0c;我们的热情永远不会熄灭&#xff0c;在现实平凡中&#xff0c;我们终将上岸&#xff0c;阳光万里 ❤️欢迎点…

C++中类的静态成员、存储、this、友元和运算符重载

静态成员 在类定义中&#xff0c;它的成员&#xff08;包括成员变量和成员函数&#xff09;&#xff0c;这些成员可以用关键字static 声明为静态的&#xff0c;称为静态成员。 不管这个类创建了多少个对象&#xff0c;静态成员只有一个拷贝&#xff0c;这个拷贝被所有属于这个…

Qt 软件开发框架(主要部分)

目录 1、 一个软件基本要素 &#xff08;1&#xff09;UI模块 &#xff08;2&#xff09;网络模块 &#xff08;3&#xff09;业务逻辑模块 &#xff08;4&#xff09;中间层 &#xff08;5&#xff09;独立模块&#xff08;守护进程、更新模块、日志收集模块…&#xff…