计算器如何开根号的???(一篇文章讲清)

牛顿迭代法求开方的应用~

引言 ​​​​​​长除法计算平方根的方法总结与代码实现(C++, Python)https://blog.csdn.net/qq_41437512/article/details/128425094

众所周知,徒手开根号有许多方法,最著名的就是长除法, 还有些别的方法,比如前段时间毕导在b站上的视频1分钟教你徒手开根号!卖计算器的都哭了...._哔哩哔哩_bilibili ,个人认为还是数形结合的方法好用ヾ(^▽^*))),如果你和我一样,看这个标题就好奇计算器是怎么开根号的呢?那就往下看!

牛顿迭代法

定义

牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法

公式

其实不难理解o(^▽^)o

原理

设方程函数,改方程可以变成, 我们只需要求出函数的解,就可以求出的解, emm,不错o(* ̄︶ ̄*)o

那就倒进函数计算器模拟一波?推荐desmos :D

*注:如果是求开三次方跟,则迭代公式是 xn = 2/3*xn + x/(3*xn*xn)

理论可行,实践开始!!!

尝试求方程 f(x)=x^3-2=0的根(*^▽^*)

1.建立函数 f(x) 和它的导数 f'(x)

这个对大家一定没有难度啦(๑´ㅂ`๑)

def f(x):

return x**3 -2

def df(x):

return 3*x**2

2.加上迭代算法

def newton_ (f, df, x0, tol=1e-6, max_iter=100):

count = 0

while True:

x1 = x0 - f(x0)/df(x0)

if abs(x1 - x0) < tol:

break

x0 = x1

count += 1

if count >= max_iter:

raise ValueError("Iteration limit exceeded")

return x1

3.函数直接出解

root = newton_method(f, df, 1.5)

print("Root:", root)

这种方法的优缺点

1 优点

简而言之 就是迭代次数少精度高(对应收敛速度快)

其他优点占时想不到o(≧口≦)o

知道的欢迎在评论区讨论~

2 缺点

1.对目标函数有较高要求(例如海森矩阵必须正定)

2.实话说,计算量是有点大|(*′口`)

总结

这种迭代方法总的来说还是挺不错的

还有其他一些著名的迭代方法比如

最经典的迭代算法是欧几里得算法·,用于计算两个整数a,b的最大公约数

还有一个很典型的例子是斐波那契(Fibonacci)数列

一个扩展

泰勒展开?

眼神好的 肯定感觉很眼熟, 这也是泰勒展开到第二阶!


厉害的日语怎么说
狂暴之翼新区开放时间揭秘,多久开新区,玩家们翘首以盼!