完整教程:图解人工智能中的高等数学(python实现)---一元函数微分学

news/2025/9/27 17:09:42/文章来源:https://www.cnblogs.com/wzzkaifa/p/19115330

欢迎来到人工智能的世界 
博客主页:卿云阁

欢迎关注点赞收藏⭐️留言

本文由卿云阁原创!

本阶段属于练气阶段,希望各位仙友顺利完成突破

首发时间:2025年9月23日

✉️希望可以和大家一起完成进阶之路!

作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

导数和微分

导数

微分

求导法则

复合函数的求导​

隐函数的求导

参数方程求导法

泰勒公式

微分中值定理


导数和微分

导数

import sympy as sp
# 1. 定义符号变量
# 在 SymPy 中,首先需要定义一个符号变量 'x',以便进行符号计算。
x = sp.Symbol('x')
# 2. 定义函数表达式
# 将函数 f(x) = x^2 - 2 作为一个 SymPy 表达式来表示。
f_x = x**2 - 2
# 3. 计算一阶导数
# 使用 sp.diff() 函数对 f_x 进行求导。
# 第一个参数是要被求导的函数,第二个参数是求导的变量。
f_prime = sp.diff(f_x, x)
# 4. 计算二阶导数
# 对 f_prime 再次求导,即可得到二阶导数。
f_double_prime = sp.diff(f_prime, x)
# 5. 打印结果
# 使用 sp.latex() 函数可以将 SymPy 表达式转换为 LaTeX 格式,
# 让输出结果更接近数学公式的样式,但在这里直接打印也清晰明了。
print(f"原函数 f(x) = {f_x}")
print(f"一阶导数 f'(x) = {f_prime}")
print(f"二阶导数 f''(x) = {f_double_prime}")

集合意义

简单来说:函数在某一点的导数,就是函数图像在这一点切线的斜率

导数的应用:梯度下降算法

假设我们有一个非常简单的机器学习模型,其损失函数是:

我们的目标是找到参数 w 的值,使得这个损失函数达到最小值。

解决方法:我们可以使用梯度下降。梯度(在一维情况下就是导数)告诉我们函数在当前位置变化

最快的方向。为了找到最小值,我们需要沿着导数相反的方向前进。

       w_new 是新的参数值,w_old 是旧的参数值,α 是学习率(Learning Rate),它控制着我们

每一步前进的幅度。

import numpy as np
import matplotlib.pyplot as plt
# 设置字体和负号显示,支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 1. 定义损失函数 L(w)
def loss_function(w):return w**2 - 4*w + 5
# 2. 定义损失函数的导数 L'(w)
# 这是导数的关键应用,它指示了梯度的方向
def gradient(w):return 2*w - 4
# 3. 设置梯度下降参数
learning_rate = 0.1  # 学习率
initial_w = 10       # 初始参数值
num_iterations = 20  # 迭代次数
# 4. 运行梯度下降
w_history = [initial_w]
loss_history = [loss_function(initial_w)]
w = initial_w
for i in range(num_iterations):grad = gradient(w)w = w - learning_rate * gradw_history.append(w)loss_history.append(loss_function(w))
# 5. 可视化结果
# 生成用于绘图的 w 值范围
w_vals = np.linspace(-5, 15, 400)
loss_vals = loss_function(w_vals)
plt.figure(figsize=(10, 7))
# 绘制损失函数曲线
plt.plot(w_vals, loss_vals, label='损失函数 $L(w) = w^2 - 4w + 5$', color='#1f77b4', linewidth=2.5)
# 绘制梯度下降的路径
plt.plot(w_history, loss_history, 'o--', color='red', markersize=8, label='梯度下降路径')
# 标记起点和终点
plt.plot(w_history[0], loss_history[0], 'go', markersize=10, label='起点')
plt.plot(w_history[-1], loss_history[-1], 'ro', markersize=10, label=f'终点 (w={w_history[-1]:.2f})')
# 标记最小值点
min_w = 2 # 损失函数的最小值点可以通过 L'(w)=0 得到
plt.plot(min_w, loss_function(min_w), 'k*', markersize=15, label=f'最小值点 (w={min_w})')
# 设置图表标题和标签
plt.title('导数在梯度下降中的应用', fontsize=16, fontweight='bold')
plt.xlabel('参数 w', fontsize=12)
plt.ylabel('损失 L(w)', fontsize=12)
plt.grid(True, linestyle='--', alpha=0.5)
plt.legend(fontsize=12)
plt.show()
# 6. 打印最终结果
print(f"最终找到的 w 值为: {w_history[-1]:.4f}")
print(f"最终的损失值为: {loss_history[-1]:.4f}")
print(f"理论上的最小值 w={min_w}, 损失={loss_function(min_w)}")

微分

     微分:是一个增量,它是在导数的基础上,用来近似函数在自变量微小变化时所产生的增量。

微分就是用导数(斜率)来估算这个小增量。

求导法则

复合函数的求导

隐函数的求导

        圆的方程 x² + y² = 1 为例,它就是一个典型的隐函数。没有办法写成y=...x这种形式。圆的

方程也可以表示为 x² + y² -1=0,也可以记作F(x,y)=0。

import sympy as sp
# 1. 定义符号变量
x, y = sp.symbols('x y')
# 2. 定义隐函数表达式 F(x, y) = x^2 + y^2 - 1
# SymPy 会将其理解为 F(x, y) = 0
f_xy = x**2 + y**2 - 1
# 3. 使用 sp.idiff() 函数进行隐函数求导
# 参数: (表达式, 对谁求导, 谁是函数)
# 这里的 y 被视为 x 的函数
dy_dx = sp.idiff(f_xy, y, x)
# 4. 打印结果
print(f"隐函数表达式: {f_xy} = 0")
print(f"隐函数求导结果 dy/dx = {dy_dx}")

参数方程求导法


泰勒公式

       泰勒公式的本质是:用多项式函数来近似一个复杂的函数。通过函数在一点上的所有导数值

(包括0阶导数),来构建一个多项式,从而精确地描述和近似函数在这一点附近的局部行为。

为什么这个方法有效?

    泰勒公式的核心在于,它利用了函数在某一点的所有导数信息。这些导数信息包含了函数在这一

点周围的所有局部几何特征:一阶导数:决定了函数的斜率。二阶导数:决定了函数的凹凸性。三

阶及更高阶导数:决定了函数的“弯曲变化”。通过把所有这些局部信息叠加起来,泰勒多项式就能

像一个“整形医生”一样,越来越精确地模仿原始函数的局部形状。

应用

近似计算:在计算机中,计算 ex 或 sinx 这样复杂函数的值时,通常就是使用它们的泰勒级数展开

式,通过有限项求和来得到近似值。

在人工智能领域:假设我们有一个神经网络模型,我们想要通过调整其参数来最小化在训练集上的

损失函数。然而,有时候这个损失函数非常复杂,难以直接求解。这时候,我们可以使用泰勒公式

来近似表示这个复杂的损失函数。我们选择一个适当的点作为展开的中心点,然后计算损失函数在

这个点的值、一阶导数、二阶导数等。我们可以使用泰勒公式将损失函数在这个点附近展开为一个

简单的二次函数。我们可以使用这个简化的二次函数来找到损失函数的最小值。虽然这个最小值可

能不是原始损失函数的真实最小值,但它足够接近,让我们可以通过调整模型参数来得到一个好的

解决方案。


微分中值定理

                    本质就是:割线的斜率等于切线的斜率

罗尔定理

拉格朗日定理

柯西定理

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

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

相关文章

怎么建设网站临汾做公关用的网站

http://{ip}:{port}/refresh 说明:springBoot版本是1.5.9,接口路径与2.x,不同 路径区别:/refresh VS /actuator/refresh 用postman调用refresh接口刷新git配置,报错如下,没有权限 在服务本地启动&#…

提供信息门户网站搭建wap网站源码下载

笔者是ctf小白,这两天也是遇到.git泄露的题目,需要工具来解决问题,在下载和使用的过程中也是遇到很多问题,写此篇记录经验,以供学习 在本篇标题三中有详细介绍了Linux系统添加环境变量的操作教程,以供学习 …

35Bourbaki1-1@《数学原理》1-1@20250927

35Bourbaki1-1@《数学原理》1-1@20250927

IDEA 2024的零卡死配置

IDEA 2024的零卡死配置用了苹果container跑Linux之后,IDEA 2024 用着用着就卡死,这是苹果 Silicon M1 Max专属JDK 8 的零卡死配置。 JDK版本配置 IDEA 2024在默认情况下 Project 的 Language level 会从JDK22开始的,…

Python + MediaPipe 手势绘画高级应用:从基础到创意交互 - 实践

Python + MediaPipe 手势绘画高级应用:从基础到创意交互 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

有建设网站的软件吗吉林市最新消息今天

这是连续剧般的文章,请关注,持续更新中... 系列文章: http://t.csdnimg.cn/Os83Qhttp://t.csdnimg.cn/Os83Q这篇文章将我们的reactro转变成http服务器... HTTP HTTP介绍 HTTP是一个基于TCP通信协议的基础上的应用层协议。接下来我们需要解析HTTP请求消息…

网站怎么做百度认证做照片有那些网站好

这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下一阶导数与Soble算子二阶导数与拉普拉斯算子图像边缘:Soble算子:二阶导数:拉…

天津智能网站建设制作桓台网站建设

转自:进阶 JavaScript 必知的 33 个点【进阶必备】 进阶 JavaScript 必知的 33 个点【进阶必备】 Original 前端小菜鸡之菜鸡互啄 前端开发爱好者 2022-04-11 08:32 收录于话题#javaScript进阶1个 点击下方“前端开发爱好者”,选择“设为星标” 第一…

Crypto 2021 s Accepted papers

转载自:https://crypto.iacr.org/2021/acceptedpapers.phpAccepted Papers 接收论文These papers are listed in order of submission.这些论文按提交顺序排列。White Box Traitor Tracing白盒背叛追踪 Mark Zhand…

详细介绍:【数据结构】哈希表(Hash Table)详解

详细介绍:【数据结构】哈希表(Hash Table)详解2025-09-27 16:57 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displa…

Github 12.3kstar, 3分钟起步做中后台?Go+Vue 脚手架,把权限、代码生成、RBAC 都封装好了

嗨,我是小华同学,专注解锁高效工作与前沿AI工具!每日精选开源技术、实战技巧,助你省时50%、领先他人一步。👉免费订阅,与10万+技术人共享升级秘籍!go-admin 是一个基于 Gin + Vue 的前后端分离权限管理脚手架,…

电子商务网站建设行情建设网站的网站叫什么男

0 前言 无人驾驶技术是机器学习为主的一门前沿领域,在无人驾驶领域中机器学习的各种算法随处可见,今天学长给大家介绍无人驾驶技术中的车道线检测。 1 车道线检测 在无人驾驶领域每一个任务都是相当复杂,看上去无从下手。那么面对这样极其…

河南城乡建设部网站首页中国十大购物网站排行榜

题目链接 洛谷P4559 题解 只会做\(70\)分的\(O(nlog^2n)\) 如果本来就在区间内的人是不用动的,区间右边的人往区间最右的那些空位跑,区间左边的人往区间最左的那些空位跑 找到这些空位就用二分 主席树 理应可以在主席树上的区间二分而做到\(O(nlogn)\)&…

苏州app制作大型网站的优化方法

网络连通性测试与网络命令验证实验报告西工大计算机网络原理实验报告网络原理实验报告实验名称: 网络连通性测试与网络命令验证 日期: 2015.11.09 班级:学号: 姓名:【一】 预习内容5个常用网络命令&#xf…

北京网站seo哪家公司好wordpress 在线教育主题

存储引擎: 存储引擎是Inndb。它支持行级锁,以及表级锁, 支持事务操作, 需要主键,若未声明主键,则会寻找表中的 not null 以及 unique 修饰的字段。若表中无此类字段,会隐式生成字段。 索引&…

网站需求清单如何用c 做网站

文章目录 一、softmax函数1.1 引入指数形式的优点1.2 引入指数形式的缺点 二、交叉熵损失函数2.1 交叉熵损失函数2.2 softmax与交叉熵损失 参考资料 一、softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区…

250927

目录JT-JY5T1S1-1JT-JY5T1S1-2FT-(JY&VOAs) JT-JY5T1S1-1Good afternoon, Dream Time Travel, How can i help you? Oh, hello, i am interested in the hoilday you offer along the coast near here. Yes, we o…

Ti 毫米波雷达FFT的缩放问题

struct DPU_RangeProcHWA_FFTtuning_t{ /*! @brief Specify amount of right (divide) shift to apply to convert HWA internal 24-bit Range FFT output to 16-bit RadarCube. User should adjust this based on th…

完整教程:多线程——单例模式

完整教程:多线程——单例模式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

A Twisty Movement

CF933A A Twisty Movement 简化题目 给定一个有 \(1\),\(2\) 两个数字组成的数组中,选择一个子串,将 \(1\) 变成 \(2\),将 \(2\) 变成 \(1\),求出变化后的序列的最长上升子序列。 思路 简单的情况 如果没有变换操…