深度学习之导数和偏导数
问题:给你一个可导函数,求该函数在某处的导数和偏导数
例1:求 y = 0.01x**2+0.1x 在 x = 5 和 x = 10处的导数
# 定义导数函数
def numerical_diff(f, x):
h = 1e-4
return (f(x + h) - f(x - h)) / (2 * h)
# 计算 y = 0.01x**2+0.1x 在 x = 5 和 x = 10处的导数
def function_1(x):
return 0.01*x**2+0.1*x
print(numerical_diff(function_1, 5))
print(numerical_diff(function_1, 10))
"""
输出结果为
0.1999999999990898
0.2999999999986347
"""
例2:计算y = x0**2+x1**2 在x0=3, x1 = 4处x0的偏导数
# 计算x0的偏导数时,把x1看成常量,即x1=4
def function_tmp1(x0):
return x0**2 + 4**2
print(numerical_diff(function_tmp1, 3))
# 输出结果为: 6.00000000000378
#计算x1的偏导数时,把x0看成常量,即x0=3
def function_tmp2(x1):
return 3 ** 2 + x1 ** 2
print(numerical_diff(function_tmp2, 4))
# 输出结果为:7.999999999999119
-
绘制二元函数的图像
# 绘制 0.05*x1**2 + x2**2二元图像 import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) x = np.arange(0, 10, 0.01) # x轴坐标 y = np.arange(0, 10, 0.01) # y轴坐标 X, Y = np.meshgrid(x, y) # 网格化 Z = 0.05 * X ** 2 + Y ** 2 # z轴坐标 ax.plot_surface(X, Y, Z) # 绘制图形 plt.xlabel("x") plt.ylabel("y") plt.show()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)