開方(開根)

開方(數學術語)

開根一般指本詞條

本詞條是多義詞,共4個義項
更多義項 ▼ 收起列表 ▲

開方(英文rooting),指求一個數的方根的運算,為乘方的逆運算(參見“方根”詞條)。在中國古代也指求二次及高次方程(包括二項方程)的正根。

基本介紹

  • 中文名:開方
  • 外文名:rooting
  • 解釋:一個數的方根的運算
  • 類別:數學(代數)
  • 適用範圍:數理科學
漢語釋義,方根,方法,電腦程式代碼,

漢語釋義

  1. 數學術語。求方根的運算。對“乘方”而言。
    周髀算經》卷上“勾股圓方圖” 漢 趙君卿 註:“勾股各自乘,並之為弦實,開方除之,即弦也。”
  2. 見方。
    南史·到溉傳》:“遭母憂,居喪盡禮。所處廬開方四尺,毀瘠過人。”
  3. 開藥方。也說開方子。
    《再生緣》第五七回:“從此下官拋棄了,再不去,開方診脈作醫生。”
    魯迅 《自序》:“因為開方的醫生是最有名的,以此所用的藥引也奇特。”
    謝覺哉 《不惑集·》:“﹝我﹞很小就知道中醫開方子,允許寫白子(即簡字或錯用字),叫‘藥白眼’。”
  4. 求算面積。
    明史·食貨志一》:“ 萬曆 六年,帝用大學士 張居正 議,天下田畝通行丈量,限三載竣事。用開方法,以徑圍乘除,畸零截補。於是豪猾不得欺隱,里甲免賠累,而小民無虛糧。”
    魏源聖武記》卷六:“ 利瑪竇 、 南懷仁諸地圖,開方計里,眉燦星臚。”
    馮桂芬 《繪地圖儀》:“今 江 南州縣有魚鱗冊,猶沿其制,惟有明以前,繪圖不知計里開方之法,圖與地不能密合,無甚足用。”

方根

數a的n(n為自然數)次方根指的是n方冪等於a的數,也就是適合b的n次方=a的數b。例如16的4次方根有2和-2。一個數的2次方根稱為平方根;3次方根稱為立方根。各次方根統稱為方根。求一個指定的數的方根的運算稱為開方。一個數有多少個方根,這個問題既與數的所在範圍有關,也與方根的次數有關。在實數範圍內,任一實數的奇數次方根有且僅有一個,例如8的3次方根為2,-8的 3次方根為-2 ;正實數偶數次方根是兩個互為相反數的數,例如16的4次方根為2和-2;負實數不存在偶數次方根;零的任何次方根都是零。在複數範圍內,無論n是奇數或偶數,任一個非零的複數的n次方根都有n個。如果複數
,那么它的n個n次方根是,k=0,1,2…,n-1。
示例圖示例圖

方法

數字4開方後就是2,2就是它開方的結果
這個用兩個相同數字表示一個數的這個數字叫做開方
4=2x2 四等於二乘二
9=3x3 九等於三乘三
16=4x4
25=5x5
36=6x6
49=7x7
64=8x8
81=9x9
100=10x10
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=公式計算結果值,此時C即為根。循環步驟受開方數字長度影響,此法也可筆算進行。採用的是牛頓疊代法。且 A、B 可為小數,分數,負數,此法為逐次逼近法。可簡單的實現編程。但是注意:不能計算負數開偶數次方。
下面為:代入法
1、把被開方的整數部分從個位起向左每隔n位為一節,用撇號分開;
2、根據左邊第一節里的數,求得開n次算術根的最高位上的數,假設這個數為a;
3、從第一節的數減去求得的最高位上數的n次方,在它們的差的右邊寫上第二節數作為第一個餘數;
4、用第一個餘數除以
,所得的整數部分試商(如果這個最大整數大於或等於10,就用9做試商);
5、設試商為b。如果
小於或等於餘數,這個試商就是n次算術根的第二位;如果
大於餘數,就把試商逐次減1再試,直到
小於或等於餘數為止。
6、用同樣的方法,繼續求n次算術跟的其它各位上的數(如果已經算了k位數數字,則a要取為全部k位數字)。公式:
例如,開立方,A=5,即k=3.公式:
5介於
之間(1的3次方=1,2的3次方=8)
可以取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位數,比前面多取一位數。
第三步:
。輸入值大於輸出值,負反饋
第四步:
.輸入值小於輸出值,正反饋
這種方法可以自動調節,第一步與第三步取值偏大,但是計算出來以後輸出值會自動轉小;第二步,第四步輸入值偏小,輸出值自動轉大。
=1.7099.

電腦程式代碼

對於任意實數的開方,可以使用切線法得到其任意精度的結果,切線法的疊代公式為:
取任意初始值
,以上疊代序列將會收斂:
實際套用中一般取初始值為稍微大
的實數,這樣可以加快序列的收斂速度。
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 valuestatic 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));}

相關詞條

熱門詞條

聯絡我們