【计算方法】实验一:python使用二分法、不动点法、牛顿法求根

题目

在这里插入图片描述

二分法
# x^3+2x^2+10x-20
def func(x):
    return x*x*x+2*x*x+10*x-20;

a=-1
b=2
fa=func(a)
fb=func(b)
eps=10e-4
iter=0

while a<=b:
    iter+=1
    x0=(a+b)/2
    fx0=func(x0)
    if abs(fx0)<eps:
        print(x0,'是用二分法求解方程的根')
        print('迭代次数为',iter)
        break
    if fa*fx0<0:
        b=x0
        fb=fx0
    elif fb*fx0<0:
        a=x0
        fa=fx0

python截图:
在这里插入图片描述


不动点迭代法
def phi(x):
    return 20/(x**2 + 2*x +10)
eps = 10e-4
N=5000
x0=1
iter=0
x1=phi(x0)

while abs(x1-x0)>eps and iter<N:
    iter+=1
    x0=x1
    x1=phi(x0)

if iter==N:
    print('迭代次数超出了上限')

print(x1,iter)

python截图
在这里插入图片描述


牛顿法
# x^3+2x^2+10x-20
def f(x):
    return x**3+2*x*x+10*x-20

def df(x):
    return 3*x*x+4*x+10

def phi(x):
    return x-f(x)/df(x)

eps = 10e-4
N=5000
x0=1
iter=0
x1=phi(x0)

while abs(x1-x0)>eps and iter<N:
    iter+=1
    x0=x1
    x1=phi(x0)
    if iter==N:
        print('迭代次数超出了上限')
        break

print(x1,iter)

python截图
在这里插入图片描述


方法结果总结
方法二分法不动点法牛顿法
近似解1.368835449218751.9231894769448141.3688081886175318
迭代次数1450002
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lydia.na

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值