tnblog
首页
视频
资源
登录

人工智能数学基础补习题(微积分、定积分、牛顿--莱布尼茨公式)

1994人阅读 2023/12/5 17:07 总访问:3467578 评论:0 收藏:0 手机
分类: python

人工智能数学基础补习题(微积分、定积分、牛顿—莱布尼茨公式)

微积分简介


微积分是研究变化和积累的数学工具,它帮助我们理解事物如何变化以及如何累积量。
变化(微分): 想象一辆汽车在移动,我们可能想知道它的速度是如何变化的。微积分可以帮助我们了解速度的变化,甚至可以推导出汽车的加速度(速度变化的变化)。
累积(积分): 如果我们知道了汽车的速度变化,微积分可以帮助我们计算汽车移动的总距离。它可以处理累积问题,例如找出曲线下面积,这在许多实际问题中是很有用的,比如计算物体的总路径长度或总体积。

定积分简介


定积分是微积分的一个重要概念,它主要用来解决曲线下面积的问题。

牛顿—莱布尼茨公式


牛顿和莱布尼茨,独立发现的,因此以他们的名字命名。这个公式表达了定积分和微分之间的关系。
设函数 (F(x)) 是连续的,并且在区间 ([a, b]) 上有一个原函数,即 (F’(x) = f(x)) ,其中 (f(x)) 是 (F(x)) 的导数。那么,曲线 (y = f(x)) 在区间 ([a, b]) 上的定积分等于 (F(b) - F(a)),即:

\int_{a}^{b} f(x) \,dx = F(b) - F(a)


这意味着,如果你能找到一个函数 (F(x)),其导数等于要积分的函数 (f(x)),那么你就可以通过计算 (F(b) - F(a)) 来求解定积分。这个公式为我们提供了一种计算定积分的便捷方法。
这个公式在微积分中具有广泛的应用,使得我们可以更容易地从微分的角度来理解和处理定积分。

Python定积分求解方法


应用SciPy科学计算 \int_{0}^{3} cos^2 (e^x)dx 0到3的曲线面积

  1. import numpy as np
  2. from scipy.integrate import quad
  3. func=lambda x:np.cos(np.exp(x)) **2 # 定义被积分函数
  4. solution=quad(func,0,3) # 调用 quad 积分函数
  5. print(solution)

(1.296467785724373, 1.3977971863744082e-09)

二重积分:简单来讲求两个函数重叠部分的面积。


应用SciPy科学计算库 \iint_{D}e ^{-x^2-y^2} dxdy,其中 D={(x,y)|0\le x \le 10,0 \le y \le 10 }

在SciPy中的一般使用dblquad函数来进行二重积分.完整函数为scipy.integrate.dblquad(func,a,b,gfun,hfun)

标签名 描述
func 是要积分的函数名称
a 变量x的下限
b 变量x的上线
gfun 变量y的下线
hfun 变量y的上线


再本题中0\le y \le 10,即使y的下限和上限为常数,也要定义函数为gfun(x)=0hfun(x)=10
本题函数gfun(x)hfun(x)的表达式为lambda x:y_alambda x:y_b,其中y_a、y_b的值为0和10。

  1. import numpy as np
  2. from scipy.integrate import dblquad
  3. def integrand(x,y):
  4. return np.exp(-x**2-y**2)
  5. x_a = 0
  6. x_b = 10
  7. y_a = 0
  8. y_b = 10
  9. solution,abserr = dblquad(integrand, x_a, x_b, lambda x :y_a, lambda x :y_b)
  10. print(solution,abserr)

0.7853981633974476 1.3753098510194181e-08


应用python编程实现定积分求近似解,按照 \int_{0}^{3} cos^2 (e^x)dx 进行求。

  1. from numpy import *
  2. a,b = 0,3
  3. def f(x):
  4. return np.cos(np.exp(x)) **2
  5. def trape(n): # 数值计算。输入参数 n 表示将积分区域分成 n 个小梯形
  6. h=(b-a)/n # 计算每个小梯形的宽度,b 和 a 是积分区间的上下限
  7. x=a # 初始化 x,表示当前小梯形的左边界
  8. sum=0 # 初始化总和,用来累加每个小梯形的面积
  9. # 使用循环计算每个小梯形的面积并累加
  10. for i in range(1,n):
  11. x2=a+i*h # 计算当前小梯形的右边界
  12. sum=sum+(f(x)+f(x2))*h/2 # 计算当前小梯形的面积并累加到总和
  13. x=x2 # 更新 x,准备计算下一个小梯形
  14. return sum
  1. a = 0 # 积分下限
  2. b = 3 # 积分上限
  3. n = 1000 # 分割数
  4. # 定义被积函数
  5. f = lambda x: np.cos(np.exp(x)) ** 2
  6. # 使用梯形法则进行积分
  7. approximate_result = trape(n)
  8. # 打印结果
  9. print("梯形法则近似解:", approximate_result)

梯形法则近似解: 1.2960750567338157


求积区间进行n=10,n=100,n=1000,n=100000等分,用来检验自定义的求定积分函数trape(n)的结果值。

函数名 描述
quad 单积分
dblquad 二重积分
tplquad 三重积分
nquad n倍多重积分
fixed_quad 高斯积分,阶数为n
quadrature 高斯正交到容差
romberg Romberg积分
trapz 梯形规则
cumtrapz 梯形法则累计计算积分
simps 辛普森的规则
romb Romberg积分
polyint 分析多项式积分(NumPy)
polyld 辅助函数polyint(NumPy)


求使用牛顿—莱布尼茨下列定积分和极限值。

\int_{1}^{2} (x^2+\frac{1}{x^4})

  1. import sympy as sp
  2. # 定义变量和函数
  3. x = sp.symbols('x')
  4. f = x**2 + 1/x**4
  5. # 计算原函数
  6. F = sp.integrate(f, x)
  7. # 计算在积分区间端点的原函数值
  8. integral_value = F.subs(x, 2) - F.subs(x, 1)
  9. # 打印结果
  10. print("定积分的值:", integral_value.evalf())
  11. print("当趋近于无穷:", sp.limit(f,x,sp.oo))
  12. print("当趋近于负无穷时:", sp.limit(f,x,-sp.oo))
  13. print("当趋近于2时:", sp.limit(f,x,2))

定积分的值: 2.62500000000000
当趋近于无穷: oo
当趋近于负无穷时: oo
当趋近于2时: 65/16


使用numpy解决的方式。

  1. import numpy as np
  2. from scipy.integrate import quad
  3. f =lambda x: x**2 + (1/x**4)
  4. solution = quad(f, 1, 2)
  5. print("定积分的值:", solution)

定积分的值: (2.625, 2.914335439641036e-14)

\int_{-1}^{0} \frac{3x^4+3x^2+1}{x^2+1}dx

提示: (arctan x) \prime = \frac{3x^4+3x^2+1}{x^2+1}

  1. import sympy as sp
  2. # 定义变量和函数
  3. x = sp.symbols('x')
  4. f = (3*x**4 + 3*x**2 + 1)/ (x**2 + 1)
  5. # 计算原函数
  6. F = sp.integrate(f, x)
  7. # 计算在积分区间端点的原函数值
  8. integral_value = F.subs(x, 0) - F.subs(x, -1)
  9. print("定积分的值:", integral_value.evalf())
  10. print("当趋近于无穷:", sp.limit(f,x,sp.oo))
  11. print("当趋近于负无穷时:", sp.limit(f,x,-sp.oo))
  12. print("当趋近于0时:", sp.limit(f,x,0))

定积分的值: 1.78539816339745
当趋近于无穷: oo
当趋近于负无穷时: oo
当趋近于0时: 1


利用定积分的定义计算极限

\lim_{n\to \infty}\frac{1^p+2^p+..+n^p}{n^{p+1}}(p>0)


可以将其表示为以下定积分的极限形式:

\lim{n \to \infty} \frac{1}{n} \sum{k=1}^{n} \left(\frac{k}{n}\right)^p


这个形式类似于定积分,其中被积函数是 (x^p),积分区间是 ([0, 1])。所以,我们可以将这个极限表示为积分:

\lim{n \to \infty} \frac{1^p + 2^p + .. + n^p}{n^{p+1}} =\lim{n \to \infty} \frac{1}{n}\sum{k=1}^{n}\left(\frac{k}{n}\right)^p = \int{0}^{1} x^p


现在,我们可以计算这个积分的值:

\lim{n \to \infty} \frac{1^p + 2^p + .. + n^p}{n^{p+1}} = \int{0}^{1} x^p \,dx = \left[\frac{x^{p+1}}{p+1}\right]_{0}^{1} = \frac{1}{p+1}


因此,最终的极限为 \frac{1}{p+1}

  1. import sympy as sp
  2. # 定义符号和参数
  3. n, p = sp.symbols('n p', positive=True, real=True)
  4. k = sp.symbols('k', integer=True)
  5. # 定义被积函数
  6. f = (k/n)**p
  7. # 计算积分
  8. integral_result = sp.integrate(f, (k, 1, n))
  9. # 计算极限
  10. limit_result = sp.limit(integral_result/n, n, sp.oo)
  11. # 打印结果
  12. print("极限的结果:", limit_result)

极限的结果: 1/(p + 1)


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Quartz.NET实例动态改变周期调度。misfireCron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.NET Windows服务发布安装卸载监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

C ??? 问号和2个问号的用法(类型?对象?)

C# ?C# ???:单问号1.定义数据类型可为空。可用于对int,double,bool等无法直接赋值为null的数据类型进行null的赋值如这...

C outref关键字的用法和区别

说说自己对out、ref的认识,面试问到的几率很高哟。out:classProgram { /* *out、ref都是引用传递,传递后使用都会改变...

cVB.net中全角半角转换方法

///<summary> ///转全角的函数(SBCcase) ///</summary> ///<paramname="input">任意字符串...

redis中主从哨兵和集群这三个有什么区别

主从模式:备份数据、负载均衡,一个Master可以有多个Slaves。sentinel(哨兵)发现master挂了后,就会从slave中重新选举一个...

JS监听inputkeydown,有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

下划线换行回车空格ASCII码值与对照表

下划线,ASCII码95换行 , ASCII码10回车 , ASCII码13空格 , ASCII码32ASCII码表:Bin(二进制)Oct(八进制)Dec(十进制)Hex(...

docker常用命令删除镜像命令进入容器docker重启命令等

1. docker version查看 Docker 版本信息2. docker info显示 Docker 系统信息,包括镜像,容器数等3. 运行容器第一次使用:d...

多线程Lock锁数据库实现队列

队列其元素以先进先出(Firstin,Firstout,FIFO)的方式来处理的集合。先放入队列中的元素会先读取。队列使用System.Collect...

jsJQuery获取文本的宽高

页面编写:<!DOCTYPEhtml> <html> <head> <metacharset="UTF-8"/> <title>jQ...

code first执行命令报错,无法将“Enable-Migrations”项识别为 cmdlet函数脚本文件

EF:执行命令报错无法将“Enable-Migrations”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如...

缓存穿透缓存击穿缓存雪崩区别

一、缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存...

微服务分布式架构项目的一点点想法

分布式与微服务的区别:说一点个人理解分布式: 分散压力。 不同功能块之间的通讯少,还是会有不少代码,每一...

文件传输原理与二进制字节字符理解

传输文件原理: 把文件转换成字节数组,通过字节数组传输 然后接收方在把字节数据转换成文件二进制为什么能存储文件 ...

使用jquery操作元素的css样式(获取修改等等)

使用jquery操作元素的css样式(获取、修改等等) //1、获取和设置样式 $("#tow").attr("class")...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术