首頁>Club>
18
回覆列表
  • 1 # zbx30

    手開根號2(與做豎式除法方法相似)

    如果你要在小數點保留三位,就在2.後邊加6個0。首先2只夠1的平方·

  • 2 # 多維觀世界

    我在上初中時對這個問題很感興趣,當時書上有計算開平方的具體方法(見圖一),於是無聊時,手動開方,當時求得小數點後十位,1.4142135623。再往下資料龐大,計算量也大,就放棄了。

    直到高中畢業後,高考後又閒的無聊,想起這檔子事了。就正而八經地用了一個本子,將大數分解成一段一段小數,用家裡的計算器計算,求得二十位根號二(包括第一位1,下同),

    14142 13562 37309 50488。

    大學裡學習了計算機程式設計,便又對這個問題感興趣了,當時編了一個c語言的程式,如下圖二。結果計算精度還不如手動的,是1414213568。這是因為整數變數有最大值限制,於是高中時的方法又用上了。將超出變數值限制的數分成5位一段,每段放入一個數組。這樣就可以求出幾乎任意位數的根號二值了。於是說做就做,終於寫出計算根號二的程式,隨後又經過不斷演算,修改其中的各種錯誤。最終的程式由於太長,不便列出。只把結果列出。圖三是一千位的根號二數值。我用這個程式求得十萬位,見圖四。

    當然這個程式不僅可以算根號二,還可以進行任意數開方。

  • 3 # 宇宙裂痕

    二分法c語言程式設計

    #include<stdio.h>

    double f(double x)

    {

    double y;

    y=x*x-2.0;

    return y;

    }

    int main()

    {

    double a, b, c, t;

    printf("精度:");

    scanf("%lf",&a);

    printf("初始值b c:");

    scanf("%lf%lf",&b,&c);

    if (f(b)*f(c)<0)

    {

    do

    {

    t=(b+c)/2;

    printf("過程:%lf\n",t);

    if (f(b)*f(t)<0)

    c=t;

    else

    b=t;

    } while(f(t)*f(t)>a*a);

    printf("最終結果:%lf",t);

    }

    else

    {

    printf("錯誤");

    }

    return 0;

    }

  • 4 # 悠鹿鳴

    √2= 1.4142135623731

    過程:

    設x=√2,

    那麼,變形可得x²=2。

    令f(x)=x²-2,

    此時,函式f(x)的零點的橫座標就是√2的值。

    對f(x)使用牛頓迭代法,φ(x)=x-f(x)/f"(x),

    即,φ(x)=x/2+1/x,

    取初值x=2,迭代一次得x=1.5,兩次得x=1.4166667,三次得x=1.414215686,四次得1.414213562。

    僅四步迭代,與√2的誤差已經非常之小,可滿足大部分工程上要求的精度。

    擴充套件:

    √2 是一個無理數,它不能表示成兩個整數之比,是一個看上去毫無規律的無限不迴圈小數。

    早在古希臘時代,人們就發現了這種奇怪的數,這推翻了古希臘數學中的基本假設,直接導致了第一次數學危機。根號二一定是介於1與2之間的數。然後再計算1.5的平方大小……也就是一個用二分法求方程x^2=2近似解的過程。

  • 中秋節和大豐收的關聯?
  • 該用什麼方式去奮鬥,儘快擺脫現有生活?