牛顿下山法和弦截法求x^3-x-1=0的根

牛顿下山法

# -*- coding: utf-8 -*-
"""
Created on Wed May  8 20:16:34 2019

@author: xh216
"""
def f(m):
    return m*m*m-m-1
def f1(m):
    return 3*m*m-1
x=[]
x.append(0.5)#初始值
eps=1e-14    #精度
fx=abs(f(x[-1]))
number_iteration=0
F=[]
F.append(fx)
L=[]
while fx>eps:  #与误差值比较
    lambd=1
    df=f(x[-1])/f1(x[-1])
    x1=x[-1]-lambd*df
    fx=abs(f(x1))
    number_iteration=number_iteration+1#叠加次数
    while fx>=F[-1]:    #与上一个比较
        lambd=lambd/2
        x1=x[-1]-lambd*df  #x k+1
        fx=abs(f(x1))
        number_iteration=number_iteration+1
    F.append(fx)
    x.append(x1)
    L.append(lambd)
print('牛顿下山法迭代次数为%f次'%(number_iteration))
print('方程的根x*为\n', x[-1])
print('f(x*)的值为\n', F[-1])

    
  

弦截法

# -*- coding: utf-8 -*-
"""
Created on Wed May  8 20:57:46 2019

@author: xh216
"""

def f(x):
    return x*x*x-x-1
x=[0.6,0.5]   #2个初始值
eps=1e-14
fx=[]
fx.append(f(x[-2]))
number_iteration=0
while abs(fx[-1])>eps:
    fx.append(f(x[-1]))
    x.append(x[-1]-f(x[-1])/(fx[-1]-fx[-2])*(x[-1]-x[-2]))#x k+1
    number_iteration=number_iteration+1
print('弦截法法迭代次数为%f次'%(number_iteration))
print('方程的根x*为\n', x[-1])
print('f(x*)的值为\n', fx[-1])

时间 2019/5/8

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值