您的位置:首页 > 教育 > 培训 > 企业所得税法实施条例_石家庄疫情非常严重_seo怎么刷排名_怎么去做网络推广

企业所得税法实施条例_石家庄疫情非常严重_seo怎么刷排名_怎么去做网络推广

2025/2/24 12:53:21 来源:https://blog.csdn.net/weixin_39177986/article/details/145814662  浏览:    关键词:企业所得税法实施条例_石家庄疫情非常严重_seo怎么刷排名_怎么去做网络推广
企业所得税法实施条例_石家庄疫情非常严重_seo怎么刷排名_怎么去做网络推广
  • 梯度计算概述
  • 梯度计算的原理
  • 对于离散数据而言
    • 一维离散数据的梯度近似
      • 前向差分(Forward Difference)
      • 后向差分(Backward Difference)
      • 中心差分(Central Difference)
    • 二维离散数据的梯度近似
    • 多维扩展(以三维为例)
    • 误差分析与步长选择

梯度计算概述

梯度计算是数学和工程中的基础工具,梯度计算通常用于图像处理、数值分析和优化等领域。梯度可以帮助我们了解函数值的变化率。

梯度在科学与工程中广泛应用,例如:

  • 优化算法:梯度下降法(Gradient Descent)利用负梯度方向寻找函数最小值。
  • 物理场分析:电场、重力场的梯度表示场强的变化方向。
  • 图像处理:边缘检测通过梯度识别像素值的突变方向。

下面是个二维函数:

f ( x , y ) = x 2 + y 2 f(x,y)={{x}^{2}}+{{y}^{2}} f(x,y)=x2+y2

使用MATLAB输出结果矩阵和三维图形:

z_func_mesh

为了计算二维函数 f ( x , y ) = x 2 + y 2 f(x,y)={{x}^{2}}+{{y}^{2}} f(x,y)=x2+y2 在某一点的梯度,我们需要求出该函数在 x 和 y 方向上的偏导数,并将它们组合成一个向量。

将 y 视为常数,对 x 求导:

∂ f ∂ x = ∂ ∂ x ( x 2 + y 2 ) = 2 x \frac{\partial f}{\partial x}=\frac{\partial }{\partial x}({{x}^{2}}+{{y}^{2}})=2x xf=x(x2+y2)=2x

将 x 视为常数,对 y 求导:

∂ f ∂ y = ∂ ∂ y ( x 2 + y 2 ) = 2 y \frac{\partial f}{\partial y}=\frac{\partial }{\partial y}({{x}^{2}}+{{y}^{2}})=2y yf=y(x2+y2)=2y

组合偏导数形成梯度向量

梯度向量由上述两个偏导数组成

▽ f = ( ∂ f ∂ x , ∂ f ∂ x ) = ( 2 x , 2 y ) ▽f=(\frac{\partial f}{\partial x},\frac{\partial f}{\partial x})=(2x,2y) f=(xf,xf)=(2x,2y)

由此可得,二维函数 f ( x , y ) = x 2 + y 2 f(x,y)={{x}^{2}}+{{y}^{2}} f(x,y)=x2+y2 在任意一点 ( x , y ) (x,y) (x,y) d 梯度 ▽ f = ( 2 x , 2 y ) ▽f=(2x,2y) f=(2x,2y)

**总结:**对于函数 f ( x , y ) = x 2 + y 2 f(x,y)={{x}^{2}}+{{y}^{2}} f(x,y)=x2+y2 来说,它的梯度标量上的含义即是各自在x轴和y轴方向上的偏导数;两者组合成一个在二维平面上的向量;从而在三维空间上表示此函数所描绘的曲平面的斜率和斜率的方向。

梯度计算的原理

数学定义

梯度是多元函数的导数推广,表示函数在某一点处所有方向上的最大变化率。对于函数 f ( x 1 , x 1 , . . . , x 1 ) f({x}_{1},{x}_{1},...,{x}_{1}) f(x1,x1,...,x1) ,其梯度是一个向量:

∇ f = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . ∂ f ∂ x n , ) ∇f=\left ({\frac{\partial f}{\partial {{x}_{1}}},\frac{\partial f}{\partial {{x}_{2}}},...\frac{\partial f}{\partial {{x}_{n}}},}\right ) f=(x1f,x2f,...xnf,)

方向指向函数值增长最快的方向,模长为该方向的变化率。

对于离散数据而言

一维离散数据的梯度近似

假设有一维离散数据点 f ( x i ) f({x}_{i}) f(xi),步长为 h = x i + 1 − x i h={x}_{i+1}-{x}_{i} h=xi+1xi ,梯度(导数)的近似方法有三种:

前向差分(Forward Difference)

f ′ ( x i ) ≈ f ( x i + 1 ) − f ( x i ) h {{f}^{'}}({{x}_{i}})≈\frac{f({{x}_{i+1}})-f({{x}_{i}})}{h} f(xi)hf(xi+1)f(xi)

特点:仅用右侧相邻点,计算简单,但精度较低(一阶误差 O ( h ) O(h) O(h))。

后向差分(Backward Difference)

f ′ ( x i ) ≈ f ( x i ) − f ( x i − 1 ) h {{f}^{'}}({{x}_{i}})≈\frac{f({{x}_{i}})-f({{x}_{i-1}})}{h} f(xi)hf(xi)f(xi1)

特点:仅用左侧相邻点,计算简单,但精度较低(一阶误差 O ( h ) O(h) O(h))。

中心差分(Central Difference)

f ′ ( x i ) ≈ f ( x i + 1 ) − f ( x i − 1 ) 2 h {{f}^{'}}({{x}_{i}})≈\frac{f({{x}_{i+1}})-f({{x}_{i-1}})}{2h} f(xi)2hf(xi+1)f(xi1)

特点:利用左右两侧点,精度更高(二阶误差 O ( h 2 ) O({h}^{2}) O(h2)),但需要更多数据。

二维离散数据的梯度近似

对二维网格数据 f ( x i ) f({x}_{i}) f(xi),需分别计算 x 和 y 方向的偏导数,再组合成梯度向量

∇ f = ( ∂ f ∂ x , ∂ f ∂ y ) ∇f=\left ({\frac{\partial f}{\partial {{x}}},\frac{\partial f}{\partial {{y}}}}\right ) f=(xf,yf)

计算 x 方向的偏导数

中心差分公式(假设网格均匀,步长 h x {h}_{x} hx

∂ f ∂ x ( x i , y i ) ≈ f ( x i + 1 , y i ) − f ( x i − 1 , y i ) 2 h x \frac{\partial f}{\partial x}({{x}_{i}},{{y}_{i}})≈\frac{f({{x}_{i+1}},{{y}_{i}})-f({{x}_{i-1}},{{y}_{i}})}{2{{h}_{x}}} xf(xi,yi)2hxf(xi+1,yi)f(xi1,yi)

计算 y 方向的偏导数

中心差分公式(假设网格均匀,步长 h y {h}_{y} hy

∂ f ∂ y ( x i , y i ) ≈ f ( x i , y i + 1 ) − f ( x i , y i − 1 ) 2 h x \frac{\partial f}{\partial y}({{x}_{i}},{{y}_{i}})≈\frac{f({{x}_{i}},{{y}_{i+1}})-f({{{x}_{i}},{y}_{i-1}})}{2{{h}_{x}}} yf(xi,yi)2hxf(xi,yi+1)f(xi,yi1)

边界点的处理

边缘点(如 x 0 {x}_{0} x0 y 0 {y}_{0} y0 )无法使用中心差分,需改用前向或后向差分:

∂ f ∂ y ( x 0 , y i ) ≈ f ( x 1 , y i ) − f ( x 0 , y i ) h x \frac{\partial f}{\partial y}({{x}_{0}},{{y}_{i}})≈\frac{f({{x}_{1}},{{y}_{i}})-f({{{x}_{0}},{y}_{i}})}{{{h}_{x}}} yf(x0,yi)hxf(x1,yi)f(x0,yi)

假设均匀网格数据 f ( x , y ) = x 2 + y 2 f(x,y)={{x}^{2}}+{{y}^{2}} f(x,y)=x2+y2 网格步长 h x = h y = 1 {h}_{x}={h}_{y}=1 hx=hy=1 ,计算点(2,3)的梯度:

计算
∂ f ∂ x \frac{\partial f}{\partial x} xf

f ( 1 , 3 ) = 10 f(1,3)=10 f(1,3)=10 f ( 3 , 3 ) = 18 f(3,3)=18 f(3,3)=18 ( 18 − 10 ) / 2 = 4 (18-10)/2=4 (1810)/2=4;

计算
∂ f ∂ y \frac{\partial f}{\partial y} yf

f ( 2 , 2 ) = 8 f(2,2)=8 f(2,2)=8 f ( 2 , 4 ) = 20 f(2,4)=20 f(2,4)=20 ( 20 − 8 ) / 2 = 6 (20-8)/2=6 (208)/2=6;

所以点(2,3)的梯度: ▽ f = ( 4 , 6 ) ▽f=(4,6) f=(4,6) ,与理论值一致。

使用pytorch进行验证

import torch# 定义变量并启用梯度跟踪
x = torch.tensor(2.0, requires_grad=True)
y = torch.tensor(3.0, requires_grad=True)# 计算函数值
f = x**2 + y**2# 反向传播,计算梯度
f.backward()# 输出梯度
print("▽f=(", x.grad.item(), y.grad.item(),")")

多维扩展(以三维为例)

对三维数据 f ( x i , y i , z k ) f({x}_{i},{y}_{i},{z}_{k}) f(xi,yi,zk) ,梯度为:

∇ f = ( ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z , ) ∇f=\left ({\frac{\partial f}{\partial {{x}}},\frac{\partial f}{\partial {{y}}},\frac{\partial f}{\partial {{z}}},}\right ) f=(xf,yf,zf,)

每个方向的偏导数均用中心差分近似,例如:

∂ f ∂ z ( x i , y i , z k ) ≈ f ( x i , y i , z k + 1 ) − f ( x i , y i , z k − 1 ) 2 h x \frac{\partial f}{\partial z}({{x}_{i}},{y}_{i},{{z}_{k}})≈\frac{f({{x}_{i}},{y}_{i},{{z}_{k+1}})-f({{{x}_{i}},{y}_{i},{z}_{k-1}})}{2{{h}_{x}}} zf(xi,yi,zk)2hxf(xi,yi,zk+1)f(xi,yi,zk1)

误差分析与步长选择

  • 截断误差:由泰勒展开的高阶项忽略导致,中心差分误差更小。
  • 舍入误差:步长 h 过小时,计算机浮点运算可能放大噪声。
  • 平衡策略:选择适中的 h,通常取数据采样间隔或通过试验确定。

数值差分法通过局部线性近似将连续的导数转化为离散差值运算,是处理实验数据、图像或仿真结果的实用工具。其核心在于:

  1. 选择差分公式(前向、后向、中心)平衡精度与数据可用性。
  2. 合理处理边界条件。
  3. 优化步长以平衡截断误差与舍入误差。

这一方法在工程、物理、计算机视觉和机器学习中广泛应用,例如图像边缘检测、流体动力学模拟和优化算法中的梯度估计。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com