切線法

切線法

切線法是通過曲線上的一些特徵點的切線的交點坐標關係來計算磁性體的產狀。

基本介紹

方程求根方法,收斂性的證明,計算實例,求方程實根,任意數開n次方,文學中的表現,股票術語,

方程求根方法

切線法又稱為牛頓法,是一種一般情況下具有二階收斂速度的非線性方程的數值解法。
具體方法如下:
是方程
的根,又
附近的一個值,過
切線,則切線方程為:
切線法
上述切線與
軸的交點為:
如果曲線在
鄰域保持凹凸性不變,從圖中不難看出,
更接近方程的真實值
,由此可以得到一個疊代公式:
上面的疊代公式就是切線法的公式,不難看出這個公式實際就是牛頓公式。
可以證明,當
,且滿足以下條件時,由以上遞推式產生的序列最後收斂
上的唯一實根
(1)
(2)
(3)
上恆正;
(4) 初值
應滿足

收斂性的證明

下面給出牛頓切線法疊代格式收斂的充分條件,為了配合插圖,將充分條件具體表述為:
若(1)函式
上連續,且
(2)在區間
上,
則(1)方程
在區間
上存在唯一的實數根
(2)取初值
,由疊代公式
)定義的數列
一定收斂,且
證明(1)根據連續函式的介值定理,可得方程
在區間
上解的存在性;又根據函式的單調性可知方程在區間
的上解具有唯一性
(2)因為
上恆正。利用一階泰勒公式在區間[
)上恆有:
即曲線在過
點的切線的上方,所以切線與
軸的交點
必滿足
,又因為
,根據單調性可知
利用數學歸納法可以證明
,即
單調有界數列,所以必收斂。設其極限為
,根據函式及導數的連續性可知
在疊代式
兩邊同求極限,可得
。從而可得
根據方程根的唯一性,可以斷定
就是方程
在區間
上存在唯一的實數根

計算實例

求方程實根

求方程
的實根。
零點定理知原方程在
內有實根,
那么疊代公式為:
    x0
    1
    x1
    0.75036386784024
    x2
    0.73911289091136
    x3
    0.73908513338528
    x4
    0.73908513321516
    x5
    0.73908513321516
    由此得到方程的實根為x=0.73908513321516...
    上例的c語言程式代碼為:
    #include "math.h"#include "stdio.h"#define ABS(a) ((a)<0?-(a):(a))static double f(double x){    return x-cos(x);}static double df(double x){    return 1+sin(x);}void main(){    int i;    double x0=1, x1, err=1e-14;    for(i=1; i<50; i++)    {        x1=x0-f(x0)/df(x0);        printf("x[%d]=%.14f\n", i, x1);        if(ABS(x1-x0)<err)            break;        x0=x1;    }}

    任意數開n次方

    ,那么
    從而疊代公式為:
    舉個例子:求
    對應的疊代公式為:
    取初值x0=2,疊代如下:
    x0
    2
    x1
    3.75000000000000
    x2
    3.18740740740741
    x3
    3.07642248706644
    x4
    3.07232230248782
    x5
    3.07231682569561
    x6
    3.07231682568585
    x7
    3.07231682568585
    從上面可以看出,只要疊代6次即可求出15位精度的近似值。
    任意實數開n次方的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));}

    文學中的表現

    清代小說《蕩寇志》中,出現了劉慧娘用切線法算仰角的情節。

    股票術語

    切線法是按一定方法和原則在由股票價格的數據所繪製的圖表中畫出一些直線,然後根據這些直線的情況推測股票價格的未來趨勢,這些直線就叫切線。切線的作用主要是起支撐和壓力的作用。支撐線和壓力線的往後的延伸亦對價格的趨勢起一定的制約作用。一般說來,股票價格在從下向上抬升的過程中,一觸壓力線,甚至遠未觸及到壓力線,就會調頭向下。同樣,股票價格在從上向下跌落的過程中,在支撐線附近就會轉頭向上。另外,如果觸及切線後沒有轉向,而是繼續向上或向下,這就叫突破。突破之後,這條切線仍然有實際作用,只是名稱變了。原來的支撐線變成壓力線,原來的壓力線變成支撐線。切線法分析股市主要是依據切線的這個特性。
    切線的畫法是最為重要的,畫得好壞直接影響預測的結果。畫切線的方法有很多種,它們都是人類長期研究之後保留下來的精華。著名的有趨勢線通道線等,此外還有黃金分割線、甘氏線、角度線等。在實際套用中,人們從這些線上獲益不少。
    切線法所依據的理論便稱為切線理論。

    相關詞條

    熱門詞條

    聯絡我們