牛顿迭代法求n方根
一、简单推导

二、使用
借助上述公式,理论上可以求任意次方根,假设要求a(假设非负)的n次方根,则有xn=a,令f(x)=xn-a,则只需求f(x)=0时x的值即可。由上述简单推导知,当f(x)=0时,xn+1=xn,因此把f(x)=xn-a 代入上述迭代式进行迭代直至xn+1=xn即可。
实际中xn+1=xn可能永远达不到,可以根据给定精度△,当|xn+1-xn|<△成立时即可停止迭代,此时的xn+1即为所求。
下面以算术平方根和立方根举例。
(一)算术平方根
设待求算术平方根的数为a,其算术平方根为x,则x2=a,令f(x)=x2-a,代入上面的递推式有xn+1=xn-(xn2-a)/(2xn),整理得xn+1=(1/2)(xn+a/xn)
代码如下:
double sqrt(double a)
{
double x1=a;
double x2=a/;
while(fabs(x1-x2)>0.0000001)
{
//printf("%f\n",x2);
x1=x2;
x2=0.5*(x1+a/x1);
}
return x2;
}
(二)立方根
同理,令f(x)=x3-a,代入递推式有xn+1=xn-(xn3-a)/(3xn2),整理得xn+1=(1/3)(2xn+a/xn2)
代码如下:
double cubrt(double a)
{
double x1=a;
double x2=a/;
while(fabs(x1-x2)>0.0000001)
{
//printf("%f\n",x2);
x1=x2;
x2=(*x1+a/(x1*x1))/3.0;
}
return x2;
}
三、(题外话)手算算式平方根
顺便提下,在网上看到了一个手动列算式求解任意正整数算术平方根的方法,如下:

牛顿迭代法求n方根的更多相关文章
- 【清橙A1094】【牛顿迭代法】牛顿迭代法求方程的根
问题描述 给定三次函数f(x)=ax3+bx2+cx+d的4个系数a,b,c,d,以及一个数z,请用牛顿迭代法求出函数f(x)=0在z附近的根,并给出迭代所需要次数. 牛顿迭代法的原理如下(参考下图) ...
- 141. Sqrt(x)【牛顿迭代法求平方根 by java】
Description Implement int sqrt(int x). Compute and return the square root of x. Example sqrt(3) = 1 ...
- YTU 2405: C语言习题 牛顿迭代法求根
2405: C语言习题 牛顿迭代法求根 时间限制: 1 Sec 内存限制: 128 MB 提交: 562 解决: 317 题目描述 用牛顿迭代法求根.方程为ax3+bx2+cx+d=0.系数a,b ...
- C语言之基本算法11—牛顿迭代法求平方根
//迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1 ...
- 【Java例题】4.4使用牛顿迭代法求方程的解
4. 使用牛顿迭代法求方程的解:x^3-2x-5=0区间为[2,3]这里的"^"表示乘方. package chapter4; public class demo4 { publi ...
- 数学相关比较 牛顿迭代法求开方 很多个n的平方分之一
牛顿迭代法求开方 牛顿迭代法 作用: 求f(x) = 0 的解 方法:假设任意一点 x0, 求切线与x轴交点坐标x1, 再求切线与x轴交点坐标x2,一直重复,直到f(xn) 与0的差距在一个极小的范围 ...
- 牛顿迭代法实现平方根函数sqrt
转自利用牛顿迭代法自己写平方根函数sqrt 给定一个正数a,不用库函数求其平方根. 设其平方根为x,则有x2=a,即x2-a=0.设函数f(x)= x2-a,则可得图示红色的函数曲线.在曲线上任取一点 ...
- 牛顿迭代法--求任意数的开n次方
牛顿迭代法是求开n次方近似解的一种方法,本文参考. 引言 假如\(x^n = m\),我们需要求x的近似值. 我们设\(f(x) = x^n - m\), 那么也就是求该函数f(x)=0时与x轴的交点 ...
- C语言之基本算法25—牛顿迭代法求方程近似根
//牛顿迭代法! /* ============================================================ 题目:用牛顿迭代法求解3*x*x*x-2*x*x-16 ...
随机推荐
- php基础19:文件
<?php //1.打开文件的更好的方法是通过 fopen() 函数.此函数为您提供比 readfile() 函数更多的选项. //fopen() 的第一个参数包含被打开的文件名,第二个参数规定 ...
- JS之apply,call,bind区别
为了加深对基础知识的理解,今天再复习下js中的apply,call,bind的区别和用法.整理笔记的过程也是一个再次学习的过程. apply和call js中的调用apply和call方法可以改变某个 ...
- 反射中getMethods 与 getDeclaredMethods 的区别
public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法.public Method[] getDeclar ...
- [CareerCup] 12.1 Find Mistakes 找程序错误
12.1 Find the mistake(s) in the following code: unsigned int i; ; i >= ; --i) printf("%d\n&q ...
- IT男的”幸福”生活"续5
各位哥们姐妹们,好,嗯,好.很多回复还是提到[IT男的”幸福”生活"]是小说来着剧情不真实,我还是免为其难的说一下吧.是真的回忆录,具体的事情都有.人也是真实的.在这里还是谢谢,这几天一直关 ...
- jqurey 遍历 div内的所有input单选复选按钮并判断是否选中及Attr(checked)无效的解决
关于页面前面标签 <ul> @{ foreach (var item in vote) { if (!string.IsNullOrEmpty(item.Img)) { <li cl ...
- 第八章:Javascript函数
函数是这样一段代码,它只定义一次,但可能被执行或调用任意次.你可能从诸如子例程(subroutine)或者过程(procedure)这些名字里对函数概念有所了解. javascript函数是参数化的: ...
- iOS - 视频循环播放
录制完视频后,我们想在录制视频的预览层上无限循环播放我们的小视频,是不是很炫酷,这时候我们就有三中选择了:1.MPMoviePlayerController2.AVPlayer3.AVAssetRea ...
- json_decode详解
json_decode是php5.2.0之后新增的一个PHP内置函数,其作用是对JSON 格式的字符串进行编码. json_decode的语法规则:json_decode ( string $j ...
- java数组的增删改查
import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; p ...