楼主: 飞天玄舞6
2734 0

[程序分享] R语言 牛顿-拉夫森迭代法求方程组 [推广有奖]

  • 3关注
  • 31粉丝

VIP1

已卖:3014份资源

学科带头人

13%

(VIP/贵宾)十级

27%

TA的文库  其他...

综合文库

威望
0
论坛币
153870 个
通用积分
4226.5233
学术水平
128 点
热心指数
148 点
信用等级
102 点
经验
76635 点
帖子
1502
精华
0
在线时间
1519 小时
注册时间
2013-12-2
最后登录
2025-11-25

楼主
飞天玄舞6 在职认证  发表于 2016-12-11 23:15:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
牛顿-拉夫森迭代法:
xk+1=xk−[f′(x)]−1f(x)


其中,f′(x)为Jacobi矩阵。
例,设非线性方程组为:
x2+y2=1,
y2=2x
求方程组的解。
Jocabi行列式:

R代码如下:
<code>
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,joc=joc)
}

Newton <-function(fun, x, k=0,eps = 1e-5){
  repeat{
    k <- k+1
    x1 <- x
    obj <- fun(x)
    x <- x - solve(obj$joc,obj$f)
    if((x-x1)%*%(x-x1)<eps){
      return(list(root=x,iter=k))
      break
    }
  }
}
</code>
<code>Newton(fun,c(1,1.2))</code>
$root
[1] 0.4142136 0.9101797

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







二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 方程组 迭代法 非线性方程组 Jacobi 方程组 行列式

strive for the best, prepare for the worst.

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-25 16:49