积分因子法

本文介绍了使用常系数积分因子法解决特定类型的微分方程的方法。通过具体实例,展示了如何找到积分因子并利用它将方程转换为全微分方程形式,进而求解。该方法对于解决一阶线性微分方程特别有效。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以a(t)=2t为例子
在这里插入图片描述

I ( t ) = e − ∫ 0 t a ( T ) d T I(t)=e^{- \int_{0}^{t} a(T)dT} I(t)=e0ta(T)dT

改写成全微分方程的形式找积分因子

在这里插入图片描述
( − ∂ A ∂ y + ∂ B ∂ x ) = − P ( x ) [ 只 与 x 有 关 ] (- \frac { \partial A } { \partial y }+\frac { \partial B } { \partial x })=-P(x)[只与x有关] (yA+xB)=P(x)[x]
1 B ( ∂ P ∂ y − ∂ Q ∂ x ) = μ ( x ) [ 只 与 x 有 关 ] \frac { 1 } { B }( \frac { \partial P } { \partial y }-\frac { \partial Q } { \partial x })=μ(x)[只与x有关] B1(yPxQ)=μ(x)[x]
则方程的积分因子 φ = φ ( x ) = e ∫ P ( x ) d x φ=φ(x)=e^{\int P(x) dx} φ=φ(x)=eP(x)dx

乘上积分因子后方程为全微分方程,两次积分即可反解出结果

y e ∫ P ( x ) d x − ∫ Q ( x ) e ∫ P ( x ) d x + f ( y ) = y e ∫ P ( x ) d x + g ( x ) ye^{ \int_{}^{} P(x)dx } -\int Q(x)e^{ \int_{}^{} P(x)dx }+f(y)=ye^{ \int_{}^{} P(x)dx }+g(x) yeP(x)dxQ(x)eP(x)dx+f(y)=yeP(x)dx+g(x)

在这里插入图片描述

来自MIT公开课的微分方程视频,有Gilbert Strang教授主讲
本视频为第八讲:常系数积分因子法
链接

### 积分梯度简介 积分梯度是一种用于解释机器学习模型决策过程的技术,旨在通过计算输入特征对模型输出的影响来提供可解释性。该方基于路径积分的概念,在给定的基线和实际输入之间定义一条路径,并沿着这条路径累积梯度信息。 具体来说,积分梯度衡量的是当某个特定输入逐渐从一个初始状态(通常是一个全零向量或其他无意义的状态)变化到最终观测值的过程中,各个特征的重要性是如何演变的[^3]。 #### 数学表达形式 假设有一个函数 \( F(x) \),其中 \( x \) 表示输入样本,则对于任意单个维度上的特征 \( i \),其对应的积分梯度可以表示为: \[ IG_i(x)= (x_i - x'_i)\int_0^1 \frac{\partial F(x' + α(x-x'))}{\partial x_i} dα \] 这里 \( IG_i(x) \) 是第 \( i \) 维特征的积分梯度;\( x' \) 代表选定的一个基准点或背景分布;而 \( α \) 则是从 0 至 1 的参数化因子,用来控制沿路径的变化程度。 此公式表明,为了获得某特征在整个预测中的贡献,应该考虑它在不同阶段下的敏感度——即随着输入逐步接近真实情况时,该特征引起的目标函数变动率是多少。 ```python import numpy as np def integrated_gradients(model, baseline, input_tensor, target_class_index=None): """Compute Integrated Gradients.""" # Define number of steps for approximation. num_steps = 50 # Create interpolation space from baseline to actual data point. interpolated_data = [ baseline + alpha * (input_tensor - baseline) for alpha in np.linspace(0, 1, num_steps) ] gradients = [] for interp_point in interpolated_data: with tf.GradientTape() as tape: tape.watch(interp_point) prediction = model(interp_point) if target_class_index is not None: class_output = prediction[:, target_class_index] gradient = tape.gradient(class_output, interp_point).numpy() gradients.append(gradient) avg_grads = sum(gradients)/len(gradients) ig_attributions = (input_tensor-baseline)*avg_grads return ig_attributions ``` 上述代码展示了如何实现积分梯度算,包括创建插值空间、获取各步长处的梯度以及最后求取平均并乘以差值得到归因分数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值