数学常识复习

数学复习

1. 正整数次方

1 0 n { n = 1 , 2 , 3 , 4...... n } 10^n \lbrace n=1,2,3,4......n\rbrace 10n{n=1,2,3,4......n}
表示n个10相乘
当n=2时,表示为 1 0 2 10^2 102
当n=3时,表示为 1 0 3 10^3 103

2. 负整数次方

1 0 n { n = − 1 , − 2 , − 3 , − 4...... − n } 10^n \lbrace n=-1,-2,-3,-4......-n\rbrace 10n{n=1,2,3,4......n}
表示n个10相乘
当n=-1时,表示为 1 0 − 1 = 0.1 10^{-1}=0.1 101=0.1
当n=-2时,表示为 1 0 − 2 = 0.01 10^{-2}=0.01 102=0.01
当n=-3时,表示为 1 0 − 3 = 0.001 10^{-3}=0.001 103=0.001

3. 开方

1 0 1 n { n < 1 ∩ n > 0 } 10^\frac{1}n \lbrace n<1 \cap n>0\rbrace 10n1{n<1n>0}
表示为开n次方,
当 n = 1 2 时 , 表 示 为 1 2 0 当n=\frac{1}2时,表示为\sqrt[2]10 n=2121 0
当 n = 1 3 时 , 表 示 为 1 3 0 当n=\frac{1}3时,表示为\sqrt[3]10 n=3131 0

当 n = 1 n 时 , 表 示 为 1 n 0 当n=\frac{1}n时,表示为\sqrt[n]10 n=n1n1 0

4. 常见的1-9指数值

l o g 1 ≈ 0 log1\approx0 log10
1 0 0 ≈ 1 10^{0}\approx1 1001

l o g 2 ≈ 0.301029995664 log2\approx0.301029995664 log20.301029995664
1 0 0.301029995664 ≈ 2 10^{0.301029995664}\approx2 100.3010299956642

l o g 3 ≈ 0.477121254720 log3\approx0.477121254720 log30.477121254720
1 0 0.477121254720 ≈ 3 10^{0.477121254720}\approx3 100.4771212547203

l o g 4 ≈ 0.602059991328 log4\approx0.602059991328 log40.602059991328
1 0 0.602059991328 ≈ 4 10^{0.602059991328}\approx4 100.6020599913284

l o g 5 ≈ 0.698970004336 log5\approx0.698970004336 log50.698970004336
1 0 0.698970004336 ≈ 5 10^{0.698970004336}\approx5 100.6989700043365

l o g 6 ≈ 0.778151250384 log6\approx0.778151250384 log60.778151250384
1 0 0.778151250384 ≈ 6 10^{0.778151250384}\approx6 100.7781512503846

l o g 7 ≈ 0.845098040014 log7\approx0.845098040014 log70.845098040014
1 0 0.845098040014 ≈ 7 10^{0.845098040014}\approx7 100.8450980400147

l o g 8 ≈ 0.903089986992 log8\approx0.903089986992 log80.903089986992
1 0 0.903089986992 ≈ 8 10^{0.903089986992}\approx8 100.9030899869928

l o g 9 ≈ 0.954242509439 log9\approx0.954242509439 log90.954242509439
1 0 0.954242509439 ≈ 9 10^{0.954242509439}\approx9 100.9542425094399

5.任意数开任意次方的公式

设被开方数为A,开次方数为B,C为变量。
C ( B − 1 ) + A C B − 1 B \frac{C(B-1)+\frac{A}{C^{B-1}}}B BC(B1)+CB1A
首次C取值为1,带入A,B常量计算结果,并用计算结果值替换公式中的变量 C。再次计算结果,再次替换,当C=公式计算结果值,此时C即为根。循环步骤受开方数字长度影响,此法也可笔算进行。采用的是牛顿迭代法。且 A、B 可为小数,分数,负数,此法为逐次逼近法。可简单的实现编程。但是注意:不能计算负数开偶数次方。
下面为:代入法
1、把被开方的整数部分从个位起向左每隔n位为一节,用撇号分开;
2、根据左边第一节里的数,求得开n次算术根的最高位上的数,假设这个数为a;
3、从第一节的数减去求得的最高位上数的n次方,在它们的差的右边写上第二节数作为第一个余数;
4、用第一个余数除以 n ( 10 a ) ( n − 1 ) n(10a)^{(n-1)} n(10a)(n1),所得的整数部分试商(如果这个最大整数大于或等于10,就用9做试商);
5、设试商为b。如果 ( 10 a + b ) n − ( 10 a ) n (10a+b)^n-(10a)^n (10a+b)n(10a)n小于或等于余数,这个试商就是n次算术根的第二位;如果 ( 10 a + b ) n − ( 10 a ) n (10a+b)^n-(10a)^n (10a+b)n(10a)n大于余数,就把试商逐次减1再试,直到 ( 10 a + b ) n − ( 10 a ) n (10a+b)^n-(10a)^n (10a+b)n(10a)n小于或等于余数为止。
6、用同样的方法,继续求n次算术跟的其它各位上的数(如果已经算了k位数数字,则a要取为全部k位数字)。公式:
x n + 1 = x n + ( A x n k − 1 − x n ) 1 k x_{n+1}=x_n+(\frac{A}{x_n^{k-1}}-x_n)\frac{1}k xn+1=xn+(xnk1Axn)k1

例如,开立方,A=5,即k=3.公式:
x n + 1 = x n + ( 5 x n k − 1 − x n ) 1 3 x_{n+1}=x_n+(\frac{5}{x_n^{k-1}}-x_n)\frac{1}3 xn+1=xn+(xnk15xn)31
5介于 1 3 1^3 13 2 3 2^3 23之间(1的3次方=1,2的3次方=8)
x 0 x_0 x0可以取1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0都可以。例如我们取2.0.按照公式:
第一步:
x 1 = { 2.0 + [ 5 2. 0 2 − 2.0 ] 1 3 = 1.7 } 。 输 入 值 大 于 输 出 值 , 负 反 馈 ; x_1=\lbrace2.0+\lbrack\frac{5}{2.0^2}-2.0\rbrack\frac{1}3=1.7\rbrace。 输入值大于输出值,负反馈; x1={2.0+[2.0252.0]31=1.7}
即 5 ( 2 × 2 ) = 1.25 , 1.25 − 2 = − 0.75 , 0.75 × 1 3 = 0.25 , 2 − 0.25 = 1.75 , 取 2 位 数 值 , 即 1.7 。 即\frac{5}{(2\times2)}=1.25,1.25-2=-0.75,0.75\times\frac{1}3=0.25,2-0.25=1.75 ,取2位数值,即1.7。 (2×2)5=1.251.252=0.750.75×31=0.25,20.25=1.752,1.7
第二步:
x 2 = { 1.7 + [ 5 1. 7 2 − 1.7 ] 1 3 = 1.71 } 。 输 入 值 小 于 输 出 值 , 正 反 馈 ; x_2=\lbrace1.7+\lbrack\frac{5}{1.7^2}-1.7\rbrack\frac{1}3=1.71\rbrace。 输入值小于输出值,正反馈; x2={1.7+[1.7251.7]31=1.71}
即 5 ( 1.7 × 1.7 ) = 1.73010 , 1.73 − 1.7 = 0.03 , 0.03 × 1 3 = 0.01 , 1.7 + 0.01 = 1.71 , 取 3 位 数 , 比 前 面 多 取 一 位 数 。 即\frac{5}{(1.7\times1.7)}=1.73010,1.73-1.7=0.03,0.03\times\frac{1}3=0.01,1.7+0.01=1.71 ,取3位数,比前面多取一位数。 (1.7×1.7)5=1.730101.731.7=0.030.03×31=0.01,1.7+0.01=1.713
第三步:
x 3 = { 1.71 + [ 5 1.7 1 2 − 1.71 ] 1 3 = 1.709 } 。 输 入 值 大 于 输 出 值 , 负 反 馈 ; x_3=\lbrace1.71+\lbrack\frac{5}{1.71^2}-1.71\rbrack\frac{1}3=1.709\rbrace。 输入值大于输出值,负反馈; x3={1.71+[1.71251.71]31=1.709}
第四步:
x 4 = { 1.709 + [ 5 1.70 9 2 − 1.709 ] 1 3 = 1.7099 } 。 输 入 值 大 于 输 出 值 , 负 反 馈 ; x_4=\lbrace1.709+\lbrack\frac{5}{1.709^2}-1.709\rbrack\frac{1}3=1.7099\rbrace。 输入值大于输出值,负反馈; x4={1.709+[1.709251.709]31=1.7099}
这种方法可以自动调节,第一步与第三步取值偏大,但是计算出来以后输出值会自动转小;第二步,第四步输入值偏小,输出值自动转大。 x 4 = 1.7099 。 x_4=1.7099。 x4=1.7099

5.1开任意次方的计算机程序代码

对于任意实数的开方,可以使用切线法得到其任意精度的结果,切线法的迭代公式为:
x k + 1 = ( n − 1 ) x k n + a n x k n − 1 x_{k+1}=\frac{(n-1)x_k^n+a}{nx_k^{n-1}} xk+1=nxkn1(n1)xkn+a
取任意初始值 x 0 > 0 x_0 > 0 x0>0, 以上迭代序列将会收敛: x ∞ = a n x_\infty=\sqrt[n]a x=na
实际应用中一般取初始值为稍微大 a n \sqrt[n]a na 的实数,这样可以加快序列的收敛速度。

C语言代码如下:

// 2015-12-24
// By: ChenYu
#include "math.h"
#include "stdio.h"
#define ABS(a) ((a)<0?-(a):(a))
#ifdef _WIN32
    typedef unsigned __int64 uint64;
#else
    typedef unsigned long long uint64;
#endif
// calculate a approximate value
static double calcInitRoot(double x, int n)
{
    const uint64 exptMask=((uint64)1<<11)-1;
     const uint64 fracMask=((uint64)1<<52)-1;
    uint64 xInt=*(uint64*)&x;
    int xExpt=(int)((xInt>>52)&exptMask)-1023;
    xInt=((uint64)((xExpt+1024*n-1)/n)<<52)+(xInt&fracMask)/n;
    return *(double*)&xInt;
}

double calcRoot(double x, int n)
{
    int i, j, s=1-((x<0)<<(n&1));
    double a=ABS(x);
    double x1, x0=calcInitRoot(a, n);
    double err=x0*1e-14;
    if(x==0)
        return 0;
    for(i=1; i<50; i++)
    {
        double xn=1;
        for(j=0; j<n-1; j++)
            xn*=x0;
        x1=((n-1)*x0*xn+a)/(xn*n);
        // printf("x%d=%.14f\n", i, x1);
        if(ABS(x1-x0)<=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)=%+.14f\n", x, n, y);
    printf("root(%g,%d)=%+.14f\n", x, n, pow(ABS(x), 1.0/n));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烈火蜓蜻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值