R语言 牛顿-拉夫森迭代法求方程组

本文介绍了如何使用R语言的牛顿-拉夫森迭代法求解非线性方程组。通过示例展示了具体步骤,包括计算Jacobi矩阵,并给出初始值选择的重要性。经过迭代,得出解与使用rootSolve包得到的结果相符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击下方图片查看HappyChart专业绘图软件

HappyChart专业绘图软件

牛顿-拉夫森迭代法:
x k + 1 = x k − [ f ′ ( x ) ] − 1 f ( x ) x_{k+1}=x_{k}-{[f'(x)]^{-1}}f(x) xk+1=xk[f(x)]1f(x)
其中, f ′ ( x ) f'(x) f(x)为Jacobi矩阵。
例,设非线性方程组为:
x 2 + y 2 = 1 , x^2+y^2=1, x2+y2=1,
y 2 = 2 x y^2=2x y2=2x
求方程组的解。
Jocabi行列式:
雅克比式
R代码如下:


fun <- function(x){
  f <- c(x[1]^2+x[2]^2-1, x[2]^2-2*x[1])
  joc <- matrix(c(2*x[1],-2,2*x[2],2*x[2]),nr=2)
  list(f=f,jac=jac)
}

Newton <-function(fun, x,eps = 1e-5){
  k <- 0
  repeat{
  k <- k+1
    x1 <- x
    obj <- fun(x)
    x <- x - solve(obj$jac,obj$f)
    if((x-x1)%*%(x-x1)<eps){
      return(list(root=x,iter=k))
      break
    }
  }
}

最后设初始值为c(1,1.2). 注: 选择初始值必须式Jacobi行列式不为零。

Newton(fun,c(1,1.2)

$root
[1] 0.4142136 0.9101797

$iter
[1] 4
而利用rootSolve包解方程组multiroot(model,c(1,1.2)解出结果与上述结果一致,而迭代次数为5.

本资源涵盖解多元方程组、非线性方程和常微分方程的软件组合,介绍如下: 线性方程组的数值解法: 线性方程组亦即多元一次方程组。在自然科学与工程技术中,很多问题的解决常常归结为解线性方程组,如电学中的网络问题,船体数学放样中的建立三次样条函数问题,机械和建筑结构的设计和计算等等。因此,如何利用电子计算机这一强有力的计算工具去求解线性方程组,是一个非常重要的问题。线性方程组的解法分直接(解)法{是指在没有舍入误差的假设下,经过有限步运算即可方程组的精确解的方法。}和迭代(解)法{是用某种极限过程去逐步逼近线性方程组精确解的方法,即是从一个初始向量x0出发,按照一定的迭代格式产生一个向量序列xk,使其收敛到方程组A*x=b的解}。该部分就是针对线性方程组求解而设计的,内容包括:线性方程组的直接解法:Gauss消去法、Gauss列主元消去法、Gauss全主元消去法、列主元消去法应用『列主元逆矩阵、列主元行列式、矩阵的三角分解』、LU分解法、平方根法、改进的平方根法、追赶法(解三对角)、列主元三角分解法;线性方程组的迭代解法:雅可比迭代法、高斯-塞德尔迭代法、逐次超松驰迭代法迭代法的收敛性『正定矩阵判断、向量范数、矩阵范数、严格对角站优矩阵判断』。 非线性方程的数值解法: 在科学研究与工程技术中常会遇到求解非线性方程f(x)=0的问题。而方程f(x)是多项式或超越函数又分为代数方程超越方程。对于不高于四次的代数方程已有根公式,而高于四次的代数方程则无精确的根公式,至于超越方程就更无法其精确解了。因此,如何得满足一定精度要方程的近似根也就成为了广大科技工作者迫切需要解决的问题。该部分就是针对这一问题而设计的,内容包括:二分法、迭代法、迭代加速法、埃特金加速法、牛顿切线法、弦截法。 常微分方程的数值解法: 常微分方程求解问题在实践中经常遇到,但我们只知道一些特殊类型的常微分方程的解析解。在科学和工程问题中遇到的常微分方程的往往很复杂,在许多问题中,并不需要方程解的表达式,而仅仅需要获得解在若干点的就算解即可。因此,研究常微分方程的的数值解就很有必要。该部分就是针对这些而设计的,内容包括:欧拉(Euler)方法、龙格库塔(Runge-Kutta)方法、线性多步方法
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值