1 背景简介
非线性是实际问题中经常出现的,在科学与工程计算中有着重要的地位。非线性问题的数学模型有无限维的如微分方程,也有有限维的,方程的性质不同,求解方法也有很大的差异
2 案例设计
3 数学模型
3.1 牛顿迭代法
3.1.1 算法过程
3.1.2 代码
function y = f(x)
% 定义非线性向量函数
y=x(1)^3-3*x(1)-1;
end
function y = df(x)
% 定义非线性向量函数的导数形式
y=3*x(1)^2-3;
end
function [xk,k] = Newtoneqs(x0)
xk=x0-f(x0)*inv(df(x0));
k=1;
while (norm(xk-x0)>=1.0e-5)&&(k<=1.0e10)
x0=xk;
xk=x0-f(x0)*inv(df(x0));
k=k+1;
end
end
%% 输入参数
% 在函数f和df中定义非线性方程及其导函数
% 输入初始解
x0 = 2;
%% 采用牛顿迭代法求解非线性方程
[xk,n] = Newtoneqs(x0)
3.1.3 计算结果
牛顿迭代法迭代到第4步时达到精度要求,原非线性方程的数值解为x=1.879385。
4 分析与讨论
在迭代法中,牛顿迭代法是求解非线性方程最实用的方法,其优点是收敛速度快,在单根附近具有二阶收敛。主要缺陷一是初始值的选取不恰当时,迭代序列可能发散;二是如果在方程的根处函数的导数接近于0时,它们的收敛速度一般会很慢。