1.线性拟合和牛顿迭代求根,以及牛顿迭代法的多元表达雅可比矩阵

线性拟合

我们知道函数在处的导数的定义是类似如下

也就是说在自变量趋近于的时候,函数值变化量和自变量变换量的比值

我们把极限符号去掉 ,这个约等于在越接近(注:)的时候越接近等号

基于上述的理论,因为我们最终想要得到的是的表达式,
因此上面稍作变形得到

该等式叫做一种对原函数的一阶线性拟合

如果熟悉泰勒展开的话,会发现这个等式刚好是泰勒公式的一阶展开
稍提一下,泰勒在处的完全展开式(即N阶展开)

这里用线性拟合的方式做一下练习:
假设有函数,要求的大概值

根据等式
我们知道离自变量比较接近且较容易计算的一个点是,于是选一个点令 来近似拟合
于是
如果想再进一步拟合
可以令
于是
到这一步基本上误差很小了,精确度已经到小数点后四位,一般近似解完全够了,基本不需要再进行拟合,当然你可以看到,即使再进行计算,整个程序的流程都非常快

接下来说牛顿迭代的思路

牛顿迭代


还是上面的等式,但是牛顿的思路是这样的:
我们注意到一般来说是一个表达式,而这个解析式的函数值是变化的
如果要求函数和轴的交点,说白了就是求得满足条件的的取值
于是牛顿说,我构造一个函数表达式,令其等于,然后反过来迭代求的值



其实这相当于每次都让当前函数值和目标0值作差,同时计算当前迭代所在的梯度值,并根据梯度方向进行下降

还是上面的题目有函数,要求的大概值

牛顿迭代是怎么做的呢,由上面的等式可构造
同样我们选定
此时迭代式

此时选择作为下一轮的迭代

可以看到,线性拟合和牛顿迭代本质上没什么区别,不同的是,牛顿迭代需要构造一个的新函数去迭代求解,这一点要特别注意

牛顿迭代的通式为

牛顿迭代的多元情况,和雅可比矩阵

根据线性拟合

多元函数的时候,拟合应该变成

也就说,这里变成两个变量的话,是需要从两个方向去近似拟合,不理解的可以仿照一维的情况在书本上画一画,或者后续我补一张图,这里看不懂后续更看不懂了

因为牛顿迭代求根,因此令左边为零

写成矩阵形式


这个式子习惯上会写成
,多元函数的一阶泰勒展开

令左边等于0,于是迭代式
(注:这里前面那个矩阵是不可逆的,只是一种符号语言,实际计算的时候还是写开比较好)

多元函数迭代式这个形式和上面的一元迭代式基本一样
这里是长这个样子 为多元列向量

我们把这里的 叫做雅可比矩阵

你可能会说,究竟啥玩意要整这么一大坨坨,ok,接下来放个题目


image.png

图示大概长这样,一个简单的多元非线性方程组的求解问题,也就是说,不同的是,这里是两个多元函数,即求解的是两条曲线的交点问题,
可以看到这里出现了多元 ,同时出现了两个方程,
在开始之前,我们仿照上面单个方程的写法,来分别写两个函数 ,比如函数



同样的,对于牛顿迭代而言,令左边等式为零于是得到


如果写成矩阵形式,则有
\begin{bmatrix}f_1(x_0,y_0)\\f_2(x_0,y_0)\end{bmatrix}+\begin{bmatrix}\frac{\partial f_1(x_0,y_0)}{\partial x}&\frac{\partial f_1(x_0,y_0)}{\partial y}\\\frac{\partial f_2(x_0,y_0)}{\partial x}&\frac{\partial f_2(x_0,y_0)}{\partial y}\end{bmatrix}\begin{bmatrix}x-x_0\\y-y_0\end{bmatrix}=0

\begin{bmatrix}\frac{\partial f_1(x_0,y_0)}{\partial x}&\frac{\partial f_1(x_0,y_0)}{\partial y}\\\frac{\partial f_2(x_0,y_0)}{\partial x}&\frac{\partial f_2(x_0,y_0)}{\partial y}\end{bmatrix}\begin{bmatrix}x-x_0\\y-y_0\end{bmatrix}=-\begin{bmatrix}f_1(x_0,y_0)\\f_2(x_0,y_0)\end{bmatrix}

\begin{bmatrix}x-x_0\\y-y_0\end{bmatrix}=-\begin{bmatrix}\frac{\partial f_1(x_0,y_0)}{\partial x}&\frac{\partial f_1(x_0,y_0)}{\partial y}\\\frac{\partial f_2(x_0,y_0)}{\partial x}&\frac{\partial f_2(x_0,y_0)}{\partial y}\end{bmatrix}^{-1}\begin{bmatrix}f_1(x_0,y_0)\\f_2(x_0,y_0)\end{bmatrix}

\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}x_0\\y_0\end{bmatrix}-\begin{bmatrix}\frac{\partial f_1(x_0,y_0)}{\partial x}&\frac{\partial f_1(x_0,y_0)}{\partial y}\\\frac{\partial f_2(x_0,y_0)}{\partial x}&\frac{\partial f_2(x_0,y_0)}{\partial y}\end{bmatrix}^{-1}\begin{bmatrix}f_1(x_0,y_0)\\f_2(x_0,y_0)\end{bmatrix}

\begin{bmatrix}x_{n+1}\\y_{n+1}\end{bmatrix}=\begin{bmatrix}x_n\\y_n\end{bmatrix}-\begin{bmatrix}\frac{\partial f_1(x_n,y_n)}{\partial x}&\frac{\partial f_1(x_n,y_n)}{\partial y}\\\frac{\partial f_2(x_n,y_n)}{\partial x}&\frac{\partial f_2(x_n,y_n)}{\partial y}\end{bmatrix}^{-1}\begin{bmatrix}f_1(x_n,y_n)\\f_2(x_n,y_n)\end{bmatrix}

上面我们为了推导方便把多元变量用来表示
在实际的操作中(比如上面的题目)一般习惯用来表示多元变量,同时使用上标来表示迭代次数如,分别指代变量的第次迭代和第次迭代
那么我们可以将上面的等式改写一下,变量从改到,迭代次数从下标换到上标

\begin{bmatrix}x_1^{k+1}\\x_2^{k+1}\end{bmatrix}=\begin{bmatrix}x_1^k\\x_2^k\end{bmatrix}-\begin{bmatrix}\frac{\partial f_1(x_1^k,x_2^k)}{\partial x_1}&\frac{\partial f_1(x_1^k,x_2^k)}{\partial x_2}\\\frac{\partial f_2(x_1^k,x_2^k)}{\partial x_1}&\frac{\partial f_2(x_1^k,x_2^k)}{\partial x_2}\end{bmatrix}^{-1}\begin{bmatrix}f_1(x_1^k,x_2^k)\\f_2(x_1^k,x_2^k)\end{bmatrix}
简化一下写成

其中,这里的雅可比矩阵就是

那么根据上面的推论,我们可以直接写出求根迭代式

注意,上面的和中的是指的第次迭代的意思,并不是指的次方,实际编程或计算可以用别的变量命名以防被自己误导

可见使用牛顿迭代的方式求根只跟原曲线函数以及其对应的雅可比矩阵相关

总结一下

类比单个函数求根的泰勒一阶展开

个多元函数求根的问题具有类似的如下泰勒展开等式

此时令
可得出迭代式增量为

你可能感兴趣的:(1.线性拟合和牛顿迭代求根,以及牛顿迭代法的多元表达雅可比矩阵)