数值分析——用抛物线法亦称为密勒法求解方程

import math
def fun229(x): #定义方程
    fun229=x*math.exp(x)-1
    return fun229
#用抛物线法
#设用表7—10的前三个值
x0=0.5
x1=0.6
x2=0.56532 #作为计算值
# print("计算三个方程计算分别结果{},{},{}".format(fun229(x0),fun229(x1),fun229(x2)))
# fun229[x1,x0] fun229[x2,x1]
#求一阶均差
def YJJC(a1,a0):
    fun_1=(fun229(a1)-fun229(a0))/(a1-a0)
    # print(fun_1)
    return fun_1
#求二阶均差
def ERJC(a2,a1,a0):
    fun_2=(YJJC(a2,a0)-YJJC(a2,a1))/(a0-a1)
    return fun_2
#求w的值 w=f[x2,x1]+f[x2,x1,x0](x2-x1)=2.75732
def w():
    w=YJJC(x2,x1)+ERJC(x2,x1,x0)*(x2-x1)
    return w
#最后带入公式
def x3():
    #math.sqrt()会报错出现数据类型不兼容错误,所以用的math.pow()
    fun1=x2-2*fun229(x2)/(w()+math.pow(w()**2-4*fun229(x2)*ERJC(x2,x1,x0), 0.5))
    return fun1

if __name__ == '__main__':
    # 调用解一阶均差
    print("""求解f[x1,x0]得
    {}""".format(YJJC(x1, x0)))
    print("""求解f[x2,x1]得
    {}""".format(YJJC(x2, x1)))
    #调用二阶均差
    print("""求解f[x2,x1,x0]结果为:
    {}""".format(ERJC(x2,x1,x0)))
    #调用w
    print("""w的最后值为
    {}""".format(w()))
    print("""最后结果为
    {}""".format(x3()))

运行结果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vous oublie@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值