科学计算方法:求取平方根5(python实现,梯度下降,二分法)

1. 问题

求取根号5,并且满足精度小于10的负6次方。

2. 方法

f ( x ) = x 2 − 5 f(x) = x^2-5 f(x)=x25; 问题转换成:求取方程 等于0 的根。

方法一:二分法
不断维护 l e f t , r i g h t left, right left,right ,使得两者相乘小于0。

方法二:迭代法
根据泰勒展开:
在这里插入图片描述
如果使用牛顿法,有以上的公式。

然后不断迭代。

3. 实现

迭代法

acc = 1e-5
x_k = 2.5
x_kp1 = x_k - (x_k**2-5)/(2.0*x_k)
count = 1
while abs(x_kp1-x_k)>acc:
    x_k = x_kp1
    x_kp1 = x_k - (x_k**2-5)/(2.0*x_k)
    count += 1
    print(x_kp1)
print(round(x_kp1,5))#2.23607
print("count", count)#4

二分法

# 二分法
left = 2.0
right = 3.0
res = (left**2 -5)*(right**2-5)
count = 0
while abs(left-right)>acc:
    mid = (left+right)/2
    if (left**2 -5)*(mid**2-5)<0:
        right=mid
    else:
        left = mid
    print(left)
    count += 1
print(round(left,5))#2.23606
print(round(right,5))#2.23607
print("count", count)#17

迭代法是比二分法更快的,因为迭代法用到了一阶信息,沿着切线方向进行找解。


参考:

  1. 计算方法 PPT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

rosefunR

你的赞赏是我创作的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值