求a的开方

方法1:梯度下降
令x= a \sqrt{a} a ,那么 x 2 = a x^2=a x2=a,写成方程的形式就是 f ( x ) = x 2 − a f(x)=x^2-a f(x)=x2a,问题就转化为求 f ( x ) = 0 f(x)=0 f(x)=0的解,怎么转化为用梯度下降求呢?因为梯度下降是求极值的问题,可以把 f ( x ) f(x) f(x)看成是某个函数的导数,也就是 g ( x ) = 1 3 x 3 − a x g(x)=\frac{1}{3}x^3-ax g(x)=31x3ax,下面就可以用梯度下降求 g ( x ) g(x) g(x)的极值了。

过程:

x=5 #设一个初始值
f_current=(math.pow(x,3)+a*x)/3 #计算初始函数值
step=0.01
while abs(error)>=1e-5  #代表10的多少次方  1*(10的负5次方):
    x=x-step*(x*x-a) #迭代求x
    error=f_current-(math.pow(x,3)+a*x)/3
    f_current=(math.pow(x,3)+a*x)/3

方法2:二分法

又称实根对分法。二分法本质上是一种区间迭代算法,在迭代过程中不断对隔根区间进行压缩,以区间中点逼近方程的根.它所涉及的理论是连续函数介值定理.

连续函数介值定理

设函数f(x)在区间a,b上连续,且f(a)f(b)<0,则方程f(x)=0在区间(a,b)内至少有一个根.

二分法的基本思想

对有根区间a,b逐次分半,首先计算区间a,b的中间点x0,然后分析可能出现的三种情况:
如果f(x0)f(a)<0,则f(x)在区间a,x0内有零点;
如果f(x0)f(b)<0,则f(x)在区间x0,b内有零点;
如果f(x0)=0,则x0是f(x)在区间a,b内所求零点.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值