微分中的dx和delta x

在微分中中经常可以看到 d x 和 Δ x dx和\Delta x dxΔx,那么他们有什么区别呢?

在很多课程里都给出了一大堆的解释,这些解释固然重要,但这两个东东用一两句话就可以解释。

1, Δ x \Delta x Δx表示的是x的增量,例如在数轴上两点 x 1 , x 2 x_1,x_2 x1,x2,则 Δ x = x 2 − x 1 \Delta x=x_2-x_1 Δx=x2x1表示的就是从 x 1 到 x 2 x_1到x_2 x1x2的增量(可以为正,负或者0),这跟我们从初高中理解的一样。

2,dx在是在微分学中才有的符号,在 Δ x → 0 时 , d x = Δ x , 其 他 时 候 , d x ≈ Δ x \Delta x \to 0时,dx=\Delta x,其他时候,dx \approx \Delta x Δx0dx=ΔxdxΔx

3,微分,直观的理解就是分成一小块一小块,在每一小块中,用直线去近似曲线进行研究,如果这一小块无限趋近于0了,那么近似就变成等于了。一般写成dx的形式时,就说明是这一小块无限趋近于0的情形,即是研究某点微分的情形。某点函数值的微分与该点自变量的微分之比就是这点的导数(也称微商),高中只提导数,不提微分,在这里让它们接轨。

同理, d y = Δ y = f ′ ( x ) Δ x , i f Δ x → 0 ; f ′ ( x ) = lim ⁡ Δ x → 0 d y Δ x dy=\Delta y=f'(x)\Delta x,if\quad \Delta x \to 0; \quad f'(x)=\lim_{\Delta x \to 0}\frac{dy}{\Delta x} dy=Δy=f(x)ΔxifΔx0;f(x)=limΔx0Δxdy

4,在进行微积分计算时,有时候总觉得dx很多余,想扔掉它。明白了它的含义,你就舍不得扔了,它代表的是增量,自变量的增量乘以变化率(导数),就得到了函数值的增量,不积跬步无以至千里,这一点点的增量最后积分起来,就造成了一个大的变化。

5,一些常用符号

导数: f ′ ( x 0 ) f'(x_0) f(x0),一般指某一点的导数
导函数: f ′ ( x ) f'(x) f(x),一般指由某一函数所有点的导数组成的函数
微分函数: f ′ ( x 0 ) d x f'(x_0)dx f(x0)dx
函数的微分: f ′ ( x ) d x f'(x)dx f(x)dx
另外的写法:
导数: y ′ ∣ x = x 0 = f ′ ( x 0 ) y'|_{x=x_0}=f'(x_0) yx=x0=f(x0)
导函数: y ′ = f ′ ( x ) = D ( f ( x ) ) = D x ( f ) = d y d x y'=f'(x)=D(f(x))=D_x(f)=\frac{dy}{dx} y=f(x)=D(f(x))=Dx(f)=dxdy
微分函数: d y ∣ x = x 0 = f ′ ( x 0 ) d x dy|_{x=x_0}=f'(x_0)dx dyx=x0=f(x0)dx
函数的微分: d y = f ′ ( x ) d x dy=f'(x)dx dy=f(x)dx

6,一些概念

函数是从数到数的映射;
算子是从函数到函数的映射;
线性映射,也成为线性变换(这里的线性与函数图形是否为直线没关系)需满足下列条件:
1),可加性:f(x+y)=f(x)+f(y)
2),齐次性:f(ax)=af(x)

  • 22
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个用人工神经网络和最速下降法解dy/dx=2x y(0)=0 的 Python 程序示例: ```python import numpy as np # 定义神经网络模型 class NeuralNetwork: def __init__(self, input_size, hidden_size, output_size): self.input_size = input_size self.hidden_size = hidden_size self.output_size = output_size # 初始化权重和偏置 self.weights1 = np.random.randn(self.input_size, self.hidden_size) self.bias1 = np.zeros((1, self.hidden_size)) self.weights2 = np.random.randn(self.hidden_size, self.output_size) self.bias2 = np.zeros((1, self.output_size)) # 定义前向传播函数 def forward(self, x): self.z1 = np.dot(x, self.weights1) + self.bias1 self.a1 = np.tanh(self.z1) self.z2 = np.dot(self.a1, self.weights2) + self.bias2 y_pred = self.z2 return y_pred # 定义损失函数 def loss(self, y_pred, y_true): return np.mean(np.square(y_pred - y_true)) # 定义反向传播函数 def backward(self, x, y_pred, y_true): delta2 = y_pred - y_true dweights2 = np.dot(self.a1.T, delta2) dbias2 = np.sum(delta2, axis=0, keepdims=True) delta1 = np.dot(delta2, self.weights2.T) * (1 - np.power(self.a1, 2)) dweights1 = np.dot(x.T, delta1) dbias1 = np.sum(delta1, axis=0) # 更新权重和偏置 self.weights1 -= 0.1 * dweights1 self.bias1 -= 0.1 * dbias1 self.weights2 -= 0.1 * dweights2 self.bias2 -= 0.1 * dbias2 # 定义训练函数 def train(x, y_true): nn = NeuralNetwork(1, 10, 1) for i in range(10000): # 前向传播 y_pred = nn.forward(x) # 计算损失 loss = nn.loss(y_pred, y_true) # 反向传播 nn.backward(x, y_pred, y_true) # 打印损失值 if i % 1000 == 0: print('Epoch:', i, 'Loss:', loss) # 返回训练后的神经网络模型 return nn # 定义测试函数 def test(nn, x): y_pred = nn.forward(x) print('x:', x, 'y_pred:', y_pred) # 运行训练和测试函数 nn = train(np.array([[0.0]]), np.array([[0.0]])) test(nn, np.array([[1.0]])) ``` 在这个程序,我们定义了一个大小为 1-10-1 的神经网络模型,其输入层有一个神经元,隐藏层有 10 个神经元,输出层有一个神经元。我们使用最速下降法来更新神经网络模型的权重和偏置。 在训练函数,我们首先创建了一个神经网络模型,然后使用反向传播算法来更新权重和偏置。在每次更新权重和偏置后,我们都打印出当前的损失值,以便于跟踪训练的进度。 在测试函数,我们使用训练后的神经网络模型来预测 y(x=1),并打印出预测结果。 请注意,这个程序只是一个简单的示例,如果需要解决更为复杂的微分方程问题,可能需要更复杂的神经网络模型和更高级的优化算法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值