开方,求一个数方根的运算

更新时间:2022-10-18 15:44:44 阅读: 评论:0

汉语释义

方根

数a的n(n为自然数)次方根指的是n方幂等于a的数,也就是适合。例如16的4次方根有2和-2。一个数的2次方根称为平方根;3次方根称为立方根。各次方根统称为方根。求一个指定的数的方根的运算称为开方。一个数有多少个方根,这个问题既与数的所在范围有关,也与方根的次数有关。在实数范围内,任一实数的奇数次方根有且仅有一个,例如8的3次方根为2,-8的 3次方根为-2 ;正实数的偶数次方根是两个互为相反数的数,例如16的4次方根为2和-2;负实数不存在偶数次方根;零的任何次方根都是零。在复数范围内,无论n是奇数或偶数,任一个非零的复数的n次方根都有n个。如果复数,,那么它的n个n次方根是,。

方法

数字4开方后就是2,2就是它开方的结果

这个用两个相同数字表示一个数的这个数字叫做开方

四等于二乘二

九等于三乘三

2,3,4,5,6,7,8,9,10就是4和9,16,25,36,49,64,81,100开方后的数

关于任意数开任意次方的公式:设被开方数为A,开次方数为B。C为变量

首次C取值为1,带入A,B常量计算结果,并用计算结果值替换公式中的变量C。再次计算结果,再次替换,当,此时C即为根。循环步骤受开方数字长度影响,此法也可笔算进行。采用的是牛顿迭代法。且A、B 可为小数,分数,负数,此法为逐次逼近法。可简单地实现编程。但是注意:不能计算负数开偶数次方。

下面为:代入法

1、把被开方的整数部分从个位起向左每隔n位为一节,用撇号分开;

2、根据左边第一节里的数,求得开n次算术根的最高位上的数,假设这个数为a;

3、从第一节的数减去求得的最高位上数的n次方,在它们的差的右边写上第二节数作为第一个余数;

4、用第一个余数除以,所得的整数部分试商(如果这个最大整数大于或等于10,就用9做试商);

5、设试商为b。如果小于或等于余数,这个试商就是n次算术根的第二位;如果大于余数,就把试商逐次减1再试,直到小于或等于余数为止。

6、用同样的方法,继续求n次算术跟的其它各位上的数(如果已经算了k位数数字,则a要取为全部k位数字)。公式:

例如,开立方,,即.公式:

5介于至之间()

可以取1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0都可以。例如我们取2.0.按照公式:

第一步:。输入值大于输出值,负反馈;

即,,,,取2位数值,即1.7。

第二步:.。输入值小于输出值,正反馈;

即,,,。取3位数,比前面多取一位数。

第三步:。输入值大于输出值,负反馈

第四步:.输入值小于输出值,正反馈;

这种方法可以自动调节,第一步与第三步取值偏大,但是计算出来以后输出值会自动转小;第二步,第四步输入值偏小,输出值自动转大。.

计算机程序代码

对于任意实数的开方,可以使用切线法得到其任意精度的结果,切线法的迭代公式为:

取任意初始值,以上迭代序列将会收敛:

实际应用中一般取初始值为稍微大的实数,这样可以加快序列的收敛速度。

c语言代码如下:

// 2015-12-24// By: ChenYu#include math.h#include stdio.h#define ABS(a) ((a)u003c0?-(a):(a))#ifdef _WIN32    typedef unsigned __int64 uint64;#el    typedef unsigned long long uint64;#endif// calculate a approximate valuestatic double calcInitRoot(double x, int n){    const uint64 exptMask=((uint64)1u003cu003c11)-1;     const uint64 fracMask=((uint64)1u003cu003c52)-1;    uint64 xInt=*(uint64*)u0026x;    int xExpt=(int)((xIntu003eu003e52)u0026exptMask)-1023;    xInt=((uint64)((xExpt+1024*n-1)/n)u003cu003c52)+(xIntu0026fracMask)/n;    return *(double*)u0026xInt;}double calcRoot(double x, int n){    int i, j, s=1-((xu003c0)u003cu003c(nu00261));    double a=ABS(x);    double x1, x0=calcInitRoot(a, n);    double err=x0*1e-14;    if(x==0)        return 0;    for(i=1; iu003c50; i++)    {        double xn=1;        for(j=0; ju003cn-1; j++)            xn*=x0;        x1=((n-1)*x0*xn+a)/(xn*n);        // printf(x%d=%.14fn, i, x1);        if(ABS(x1-x0)u003c=err)            break;        x0=x1;    }    return s*x1;}void main(){    double x=-31141.592653589793;    int n=11;    double y=calcRoot(x, n);    printf(root(%g,%d)=%+.14fn, x, n, y);    printf(root(%g,%d)=%+.14fn, x, n, pow(ABS(x), 1.0/n));}

本文发布于:2022-10-18 15:44:44,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/83/315894.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:开方
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图