java牛顿法求方程根_快速求解方程的根——二分法与牛顿迭代法

今天是周四高等数学专题的第7篇文章。

之前的文章和大家聊了许多数学上的理论,今天和大家聊点有用的东西。

我们都知道,工业上的很多问题经过抽象和建模之后,本质还是数学问题。而说到数学问题就离不开方程,在数学上我们可以用各种推算、公式,但是有没有想过在计算机领域我们如何解一个比较复杂的方程?

如果之前没有想过,那你可能得想一想,因为以后很有可能会在面试题当中遇到。

二分法

我们要介绍的第一个方法是二分法。

说到二分法大家应该都不陌生,老实说我第一次在高数课本上看到二分法这三个字的时候,其实是蛮震惊的。后来当我又在统计等数学书上看到许多其他算法之后,才慢慢习以为常。在我转行做算法的这几年当中,我越来越意识到,数学的重要性。虽然这并不意味着你一定要成为数学高手,但如果你还没毕业的话,至少数学课好好听讲还是很有必要的。

我们说回二分法,如果学过二分法,会觉得这是一个非常简单的算法,但如果你们做过LeetCode第四题,又会发现纯二分法的题也可以这么难。如果只是单纯地讲解二分法的原理,我们是很难完完全全将这个算法吃透的。为了达到这点,我思考了很久,最终决定仿照看山是不是山的禅宗理论,将二分法也分成三个层次。

首先是第一个层次,即我们每次将一个东西分成两半。

这个应该是我们最初也是最直观的观念,比如最经典的金币问题。说是我们有若干个个硬币,其中有一个是金币,金币的重量更重,其他的硬币重量相等。我们只有一个天平,怎么样用最少的次数找出金币。

7eda55db9ec7c654515dcf6d4c18bea3.png

在这个问题当中,我们需要不停地将硬币分成两个部分,用天平锁定其中的一个。通过不断重复上述操作,快速找到答案。

在第二个层次当中,二分法不再是简单地将物体一分为二,而是一个折半查找的函数。这也是本文重点要介绍的解方程的方法。

如果有函数equation?tex=f(x),它在区间[a, b]上递增或者递减,并且equation?tex=f(a)%5Ccdot%20f(b)%20%3C%200。那么我们知道函数必然有一个等于0的解,而且这个解我们可以用二分法来求近似解。

25ba9110505850f81777f90bcdde2e22.png

在上图当中,equation?tex=f(x)递增,并且

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值