Aitken和Steffensen方法的原理及代码实现

原理

在这里插入图片描述

题目

在这里插入图片描述

代码实现

def f1(x): 
    return 7*x**5-13*x**4-21*x**3-12*x**2+58*x+3
def f2(x): 
    return ((13*x**4+21*x**3+12*x**2-58*x-3)/7)**(1/5)
def f3(x): 
    return (13+21/x+12/(x**2)-58/(x**3)-3/(x**4))/7
def f4(x): 
    return ((12*x**2-58*x-3)/(7*x**2-13*x-21))**(1/3)
def f5(x): 
    return ((-58*x-3)/(7*x**3-13*x**2-21*x-12))**(1/2)
def Aitken(x0,f):
    k=0 
    print('第x_{}次迭代的结果为{}'.format(k, x0))
    k += 1
    print('第x_{}次迭代的结果为{}'.format(k, f(x0)))
    while True:
        x = x0-((f(x0)-x0)*(f(x0)-x0)/(f(f(x0))-2*f(x0)+x0))
        k += 1
        print('第x_{}次迭代的结果为{}'.format(k, x))
        if (abs(x-x0)<(1e-5)):  # abs()函数返回绝对值,1e-5为10的负5次方
            break
        x0=f(x0)
    print("方程的解为:")
    print(x)

def Steffensen(x0,f):
    k=0 
    print('第x_{}次迭代的结果为{}'.format(k,x0))
    while True:
        k+=1
        x=x0-((f(x0)-x0)*(f(x0)-x0)/(f(f(x0))-2*f(x0)+x0))
        print('第x_{}次迭代的结果为{}'.format(k, x))
        if (abs(x-x0)<(1e-5)):  # abs()函数返回绝对值,1e-5为10的负5次方
            break
        x0=x
    print("方程的解为:")
    print(x)

f=f1 #修改函数名
#Aitken(1.5,f)
Steffensen(1.5,f)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值