人工智能数学基础(三):微积分初步

     

   微积分作为数学的重要分支,为人工智能的发展提供了坚实的理论基础。从理解数据的变化趋势到优化模型参数,微积分的应用贯穿其中。本文将深入探讨微积分的核心概念,并结合 Python 编程实例,助力大家轻松掌握这些关键知识点。资源绑定附上完整资源供读者参考学习!

3.1 极限

3.1.1 极限

    极限是微积分的基石,用于描述函数在某一点附近的趋势。例如,当 x 趋近于某个值 a 时,函数 f(x) 的极限为 L,表示 f(x) 的值可以无限接近 L。常见的求极限方法有代入法、因式分解法、有理化法等。

3.1.2 连续性

    连续性描述函数图像的连贯性。若函数 f(x) 在点 x=a 处的极限存在且等于 f(a),则称 f(x) 在 x=a 处连续。连续函数的图像是一条不间断的曲线

案例及应用:求函数极限

案例描述 :计算函数 f(x) = (x² - 1)/(x - 1) 在 x 趋近于 1 时的极限。

import sympy as spx = sp.symbols('x')
f = (x**2 - 1)/(x - 1)# 计算极限
limit_result = sp.limit(f, x, 1)
print("函数 f(x) 在 x 趋近于 1 时的极限为:", limit_result)

3.2 导数与微分

3.2.1 导数

   导数衡量函数在某一点的瞬时变化率。几何上,它表示函数曲线在该点处的切线斜率。例如,若 s(t) 表示物体的位移随时间的变化,则 s’(t) 表示物体的瞬时速度。

3.2.2 偏导数

   对于多元函数,偏导数是函数关于其中一个变量的导数,其余变量视为常数。例如,对于函数 f(x, y),其对 x 的偏导数为 ∂f/∂x。

3.2.3 梯度和方向导数

   梯度是多元函数在某一点的最大变化率方向向量,由各变量的偏导数组成。方向导数表示函数在某一特定方向上的变化率

案例及应用:计算导数和梯度

案例描述 :计算函数 f(x) = x³ - 6x² + 9x + 2 的导数,并求出其在 x=2 处的导数值;计算函数 f(x, y) = x² + y² 的梯度。

import sympy as sp
import numpy as np# 一元函数导数
x = sp.symbols('x')
f = x**3 - 6*x**2 + 9*x + 2
f_prime = sp.diff(f, x)
print("函数 f(x) 的导数为:", f_prime)
print("函数 f(x) 在 x=2 处的导数值为:", f_prime.subs(x, 2))# 多元函数梯度
x, y = sp.symbols('x y')
f_multivar = x**2 + y**2
gradient = [sp.diff(f_multivar, var) for var in (x, y)]
print("函数 f(x, y) 的梯度为:", gradient)

3.3 导数在函数性质中的应用

3.3.1 单调性

   通过研究函数的导数符号,可以判断函数的单调性。若导数大于 0,则函数在该区间单调递增;若导数小于 0,则函数单调递减。

3.3.2 凹凸性

   二阶导数的符号用于判断函数的凹凸性。若二阶导数大于 0,函数在该区间是凹的;若二阶导数小于 0,则函数是凸的。

3.3.3 极值

   极值是函数在某一点的局部最大值或最小值。寻找极值点可通过求导数并解方程 f’(x)=0 来实现。

案例及应用:分析函数的单调性、凹凸性和极值

案例描述 :分析函数 f(x) = x³ - 3x² + 1 的单调性、凹凸性和极值。

import sympy as sp
import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
x = sp.symbols('x')
f = x**3 - 3*x**2 + 1# 计算一阶导数和二阶导数
f_prime = sp.diff(f, x)
f_double_prime = sp.diff(f_prime, x)# 解方程 f’(x)=0 找到临界点
critical_points = sp.solve(f_prime, x)# 判断单调性、凹凸性和极值
monotonicity = []
for interval in [(-sp.oo, critical_points[0]), (critical_points[0], critical_points[1]), (critical_points[1], sp.oo)]:test_point = (interval[0] + interval[1])/2 if interval[0] != -sp.oo and interval[1] != sp.oo else (interval[0] + 1 if interval[0] != -sp.oo else interval[1] - 1)if f_prime.subs(x, test_point) > 0:monotonicity.append(f"在区间 {interval} 上单调递增")else:monotonicity.append(f"在区间 {interval} 上单调递减")convexity = []
for interval in [(-sp.oo, critical_points[1]), (critical_points[1], sp.oo)]:test_point = (interval[0] + interval[1])/2 if interval[0] != -sp.oo and interval[1] != sp.oo else (interval[0] + 1 if interval[0] != -sp.oo else interval[1] - 1)if f_double_prime.subs(x, test_point) > 0:convexity.append(f"在区间 {interval} 上是凹的")else:convexity.append(f"在区间 {interval} 上是凸的")extrema = []
for point in critical_points:if f_double_prime.subs(x, point) > 0:extrema.append(f"在 x={point} 处有极小值")elif f_double_prime.subs(x, point) < 0:extrema.append(f"在 x={point} 处有极大值")print("单调性:", monotonicity)
print("凹凸性:", convexity)
print("极值:", extrema)# 绘制函数图像
x_vals = np.linspace(-1, 3, 400)
y_vals = x_vals**3 - 3*x_vals**2 + 1plt.figure(figsize=(8, 6))
plt.plot(x_vals, y_vals, label='f(x) = x**3 - 3x**2 + 1',color='gold')
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title('函数图像')
plt.legend()
plt.grid(True)
plt.show()

3.4 一元积分学

3.4.1 不定积分

   不定积分是求导的逆运算,表示所有原函数的集合。例如,函数 f(x) 的不定积分表示为 ∫f(x)dx = F(x) + C,其中 F’(x)=f(x),C 为积分常数。

3.4.2 微分方程

   微分方程是含有未知函数及其导数的方程。例如,dy/dx = ky 是一个一阶微分方程,其解为指数函数 y = Ce^{kx}。

3.4.3 定积分

    定积分用于计算曲线与坐标轴之间的面积。例如,函数 f(x) 在区间 [a, b] 上的定积分为 ∫ₐᵇ f(x)dx。

案例及应用:计算不定积分和定积分

案例描述 :计算函数 f(x) = 2x 的不定积分,并计算其在区间 [1, 3] 上的定积分。

import sympy as spx = sp.symbols('x')
f = 2*x# 计算不定积分
indefinite_integral = sp.integrate(f, x)
print("函数 f(x) 的不定积分为:", indefinite_integral)# 计算定积分
definite_integral = sp.integrate(f, (x, 1, 3))
print("函数 f(x) 在区间 [1, 3] 上的定积分为:", definite_integral)

3.5 多元积分学

3.5.1 二重积分的概念

   二重积分是定积分在多元函数中的推广,用于计算曲顶柱体的体积。例如,函数 f(x, y) 在区域 D 上的二重积分为 ∬₀ D f(x, y)dxdy。

3.5.2 二重积分的计算

   计算二重积分通常采用迭代积分的方法,先对一个变量积分,再对另一个变量积分

案例及应用:计算二重积分

案例描述 :计算函数 f(x, y) = x² + y² 在区域 D(0 ≤ x ≤ 1,0 ≤ y ≤ 1)上的二重积分。

import sympy as spx, y = sp.symbols('x y')
f = x**2 + y**2# 计算二重积分
double_integral = sp.integrate(sp.integrate(f, (x, 0, 1)), (y, 0, 1))
print("函数 f(x, y) 在区域 D 上的二重积分为:", double_integral)

3.6 实验:梯度下降法

3.6.1 实验目的

   理解梯度下降法的基本原理,掌握其在 Python 中的实现方法,并应用于函数优化问题。

3.6.2 实验要求

   使用梯度下降法优化一个简单的二次函数,观察其收敛过程,并绘制收敛曲线。

3.6.3 实验原理

   梯度下降法是一种基于梯度的优化算法。通过计算目标函数的梯度,不断更新参数,使目标函数值逐步减小,最终收敛到极小值点

3.6.4 实验步骤

  1. 定义目标函数和计算梯度的函数。

  2. 初始化参数学习率。

  3. 迭代更新参数,直到满足停止条件

  4. 绘制收敛曲线。

3.6.5 实验结果

import numpy as np
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 目标函数和梯度函数
def f(x):return x**2 + 2*x + 1def grad_f(x):return 2*x + 2# 初始化参数
x = 5  # 初始点
learning_rate = 0.1
max_iter = 100
tolerance = 1e-6# 梯度下降迭代
history = []
for i in range(max_iter):grad = grad_f(x)x = x - learning_rate * gradhistory.append(f(x))if abs(grad) < tolerance:break# 绘制收敛曲线
plt.figure(figsize=(8, 6))
plt.plot(range(len(history)), history, marker='o',color='r',linestyle='dashed')
plt.xlabel('迭代次数')
plt.ylabel('目标函数值')
plt.title('梯度下降法收敛过程')
plt.grid(True)
plt.show()print("优化后的 x 值为:", x)
print("最小值为:", f(x))

     以上是人工智能数学基础中微积分初步的内容和案例分析。希望本文能够帮助大家更好地理解微积分知识在人工智能中的应用。通过实践操作,可以进一步巩固这些知识点,为深入学习人工智能奠定坚实的数学基础。资源绑定附上完整资源供读者参考学习!

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

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

相关文章

区块链密码学核心

文章目录 概要1. 基础密码学哈希函数&#xff08;Hash Function&#xff09;对称加密与非对称加密数字签名&#xff08;Digital Signature&#xff09;密钥管理 2. 区块链专用密码学技术零知识证明&#xff08;Zero-Knowledge Proof, ZKP&#xff09;同态加密&#xff08;Homom…

Java后端开发day39--方法引用

&#xff08;以下内容全部来自上述课程&#xff09; 1.1 含义 把已经有的方法拿过来用&#xff0c;当作函数式接口中抽象方法的方法体。 已经有的方法&#xff1a;可以是Java自己写的&#xff0c;也可以是第三方的。 示例语句&#xff1a; &#xff1a;&#xff1a;是方法引…

目前市面上知名的数据采集器

程序员爱自己动手打造一切&#xff0c;但这样离钱就会比较远。 市面上知名的数据采集工具 数据采集工具&#xff08;也称为网络爬虫或数据抓取工具&#xff09;在市场上有很多选择&#xff0c;以下是目前比较知名和广泛使用的工具分类介绍&#xff1a; 一、开源免费工具 Scra…

TP5兼容达梦国产数据库

1.首先数据库安装&#xff0c;部署时需配置大小写不敏感 2.安装PHP达梦扩展&#xff0c;一定要是对应版本&#xff08;兼容操作系统&#xff09;的扩展&#xff0c;否则会出现各种报错。参考官方文档&#xff1a;https://eco.dameng.com/document/dm/zh-cn/app-dev/php_php_new…

《解锁图像“高清密码”:超分辨率重建之路》

在图像的世界里&#xff0c;高分辨率意味着更多细节、更清晰的画面&#xff0c;就像用高清望远镜眺望远方&#xff0c;一切都纤毫毕现。可现实中&#xff0c;我们常被低分辨率图像困扰&#xff0c;模糊的监控画面、老旧照片里难以辨认的面容……不过别担心&#xff0c;图像超分…

整合 CountVectorizer 和 TfidfVectorizer 绘制词云图

本文分别整合 CountVectorizer 和 TfidfVectorizer 绘制词云图 ✨ CountVectorizer CountVectorizer 是 scikit-learn 中用于 文本特征提取 的一个工具&#xff0c;它的主要作用是将一组文本&#xff08;文本集合&#xff09;转换为词频向量&#xff08;Bag-of-Words&#xf…

Linux 用户管理

用户管理是 Linux 系统管理中的重要组成部分&#xff0c;它涉及到用户和用户组的创建、删除、修改以及权限分配等操作。以下是关于用户和用户组管理的详细说明&#xff1a; 一、用户和用户组的概念 &#xff08;一&#xff09;用户&#xff08;User&#xff09; 用户是系统中…

【HTTP/2和HTTP/3的应用现状:看不见的革命】

HTTP/2和HTTP/3的应用现状&#xff1a;看不见的革命 实际上&#xff0c;HTTP/2和HTTP/3已经被众多著名网站广泛采用&#xff0c;只是这场革命对普通用户来说是"无形"的。让我们揭开这个技术变革的真相。 著名网站的HTTP/2和HTTP/3采用情况 #mermaid-svg-MtfrNDo5DG…

青少年编程与数学 02-018 C++数据结构与算法 16课题、贪心算法

青少年编程与数学 02-018 C数据结构与算法 16课题、贪心算法 一、贪心算法的基本概念定义组成部分 二、贪心算法的工作原理三、贪心算法的优点四、贪心算法的缺点五、贪心算法的应用实例&#xff08;一&#xff09;找零问题问题描述&#xff1a;贪心策略&#xff1a;示例代码&a…

UE5 Set actor Location和 Set World Location 和 Set Relative Location 的区别

在 Unreal Engine 的蓝图里&#xff0c;SetRelativeLocation、SetWorldLocation 和 SetActorLocation 三个节点虽然都能改变物体位置&#xff0c;但作用对象和坐标空间&#xff08;Coordinate Space&#xff09;不同&#xff1a; 1. SetActorLocation 作用对象&#xff1a;整个…

VINS-FUSION:跑通手机录制数据

文章目录 &#x1f4da;简介&#x1f680;手机录制数据&#x1f680;跑通数据&#x1f527;启动rviz&#x1f527;启动配置&#x1f527;播放rosbag&#x1f3af;跑通结果 &#x1f4da;简介 利用智能手机的 摄像头IMU 采集数据&#xff0c;并在 VINS-Fusion&#xff08;视觉惯…

Spring AI在大模型领域的趋势场景题深度解析

Spring AI在大模型领域的趋势场景题深度解析 在互联网大厂Java求职者的面试中&#xff0c;经常会被问到关于Spring AI在大模型领域的趋势场景的相关问题。本文通过一个故事场景来展示这些问题的实际解决方案。 第一轮提问 面试官&#xff1a;马架构&#xff0c;欢迎来到我们…

MySQL数据库全面详解:从基础到高级应用

一、数据存储概述 在计算机系统中&#xff0c;数据可以存储在多种形式中&#xff1a; 变量&#xff1a;程序中最基本的数据存储单元 元组&#xff1a;不可变的序列类型&#xff0c;常用于函数返回多个值 列表&#xff1a;有序可变集合&#xff0c;可存储不同类型元素 字典&…

Redux和MobX有什么区别

Redux 和 MobX 都是用于 React 应用的全局状态管理库&#xff0c;但它们在设计理念、使用方式和适用场景等方面存在明显的区别&#xff0c;下面为你详细分析&#xff1a; 1. 设计理念 Redux&#xff1a;基于 Flux 架构&#xff0c;遵循单向数据流和纯函数式编程的理念。状态是…

WPF实现类似Microsoft Visual Studio2022界面效果及动态生成界面技术

WPF实现类似VS2022界面效果及动态生成界面技术 一、实现类似VS2022界面效果 1. 主窗口布局与主题 <!-- MainWindow.xaml --> <Window x:Class"VsStyleApp.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x…

备份服务器,备份服务器数据有哪些方法可以实现?

服务器承载着企业核心业务数据与关键应用&#xff0c;数据丢失或业务中断可能带来灾难性后果。因此&#xff0c;构建一套科学、可靠的服务器数据备份体系至关重要。当前&#xff0c;服务器数据备份方法可根据技术架构、存储介质及恢复需求进行多维划分。根据不同场景、预算和技…

前端基础——5、CSS border属性与渐变色(详解与实战)

前端基础——5、CSS border属性与渐变色详解 CSS border属性与渐变色&#xff08;详解与实战&#xff09;一、border属性全面解析1. 基础三属性2. 复合写法3. 高级特性附加.border-style详解使用示例效果&#xff1a; CSS 渐变终极指南&#xff1a;线性渐变与径向渐变的深度解析…

企业出海降本:如何将应用从 AWS EC2 快速无缝迁移至DigitalOcean Droplet

企业出海已经成为目前最热门的趋势。然而不论你是做跨境电商&#xff0c;还是短剧出海&#xff0c;或处于最热门的AI 赛道&#xff0c;你都需要使用海外的云主机或GPU云服务。海外一线的云服务平台尽管覆盖区域广泛&#xff0c;但是往往费用成本较高。所以降本始终是企业出海关…

解决Spring Boot多模块自动配置失效问题

前言 在Spring Boot多模块项目中&#xff0c;模块间配置不生效是一个复杂但可解决的问题&#xff0c;尤其涉及自动配置类、依赖冲突、条件注解以及IDE配置。 一、问题背景与场景 1.1 场景描述 假设存在两个模块&#xff1a; 模块A&#xff1a;提供通用配置&#xff08;如跨…

WEBSTORM前端 —— 第2章:CSS —— 第4节:盒子模型

目录 1.画盒子 2.Pxcook软件 3.盒子模型——组成 4.盒子模型 ——边框线 5.盒子模型——内外边距 6.盒子模型——尺寸计算 7.清除默认样式 8.盒子模型——元素溢出 9.外边距问题 ①合并现象 ②塌陷问题 10.行内元素——内外边距问题 11.盒子模型——圆角 12.盒子…