牛頓法解方程

2022-05-08 15:49:56 字數 3941 閱讀 7992

1樓:電燈劍客

如果尋找方程f(x)=0的零點t,假定f二階可導,那麼在t附近的點u有

0=f(t)=f(u)+f'(u)(t-u)+f''(x)(t-u)^2

略去二階小量得

f(u)+f'(u)(t-u)=0

於是t=u-f(u)/f'(u)

但是實際上因為f不一定是線性的,不可以忽略略去二階小量的影響,所以上述過程就要迭代地進行

f(x_)=x_n-f(x_n)/f'(x_n)並且這個迭代具有(區域性)二次收斂性。

就寫這些,教材上一般都會有的,你自己去看看。

2樓:閃亮登場

一、牛頓法

解非線性方程f(x)=0的牛頓(newton) 法,就是將非線性方程線性化的一種方法。它是解代數方程和超越方程的有效方法之一。

(一) 牛頓法的基本思想

把非線性函式f(x)在 處成 泰勒級數

f(x)=f( )+(x- )f′( )+(x- ) + …

取其線性部分,作為非線性方程f(x)=0的近似方程,則有

f( )+(x- ) f′( )=0

設f′( )≠0,則其解為x = - (1)

再把f(x)在x 處為泰勒級數,取其線性部分為f(x)=0的近似方程,若

f′(x ) ≠0,則得x = - 如此繼續下去,得到牛頓法的迭代公式:x = - (n=0,1,2,…) (2)

例1 用牛頓法求方程f(x)=x +4x -10=0在[1,2]內乙個實根,取初始近似值x =1.5。

解 f′(x)=3x +8x所以迭代公式為:

x = - n=0,1, 2,…

(二 ) 牛頓法的幾何意義

方程f(x)=0的根就是曲線y=f(x)與x軸交點的橫座標x*,當初始近似值 選取後,過( ,f( ))作切線,其切線方程為:y- f( )=f′( )(x- )

它與x軸交點的橫座標為x = -

一般地,設 是x*的第n次近似值,過( ,f( )作y=f(x)的切線,其切線與x軸交點的橫座標為:x = - 即用切線與x軸交點的橫座標近似代

曲線與x軸交點的橫座標,如圖2-4。

2-4牛頓法正因為有此明顯的幾何意義,所以也叫切線法。

(三) 牛頓法的收斂性及收斂速度

定理 設f(x)在[a,b ]滿足

(1) (1) f(a)·f(b)<0

(2) f(x)∈[a,b],f′(x),f″(x)均存在,且f′(x)與f″( x)的符號均保持不變。

(3) f( )·f″(x)>0, 、x∈[a,b],則方程f(x)=0在[a,b]上有且只有乙個實根,由牛頓法迭代公式計算得到的近似解序列{ }收斂於方 程f(x)=0的根x*。

由方程f(x)=0得到的牛頓迭代形式

x=x- = =1- = 由於f(x*)=0,所以當f′(x*)≠0時, (x* )= 0,牛頓法至少是二階收斂的,即牛頓法在單根附近至少是二階收斂的,在重根附近是線性收斂的。

牛頓法收斂很快,而且可求復根,缺點是對重根收斂較慢,要求函式的一階導數存在。

(四) 牛頓二階導數法

這裡將簡單介紹一下牛頓二階導數法。對其幾何意義及收斂性不作詳細的敘述,讀者可仿照牛頓法進行討論,其基本思想是:

將f(x)在 處泰勒級數

f(x)=f( )+f′( )(x- )+ f″( )(x- ) +…

取右端前三項近似代替f(x),於是得f(x)=0的近似方程為

f( )+f′( )(x- )+ f″( )(x- ) =0

也即f( )+(x- )[f′( )+ f″( )(x- )] =0 (3)

設其解為 .利用(1), - =- ,代入(3)中括號內 - ,則得f( )+( - ) [f′( )+ f″( ) ] =0

於是解出 ,得 = -

重複以上過程得: = -

於是得牛頓二階導數法的迭代公式為:

= - n=0,1,2,… (4)

上式與牛頓法迭代公式(2)相比,利用此公式求根收斂更快,迭代次數更少。其缺點是要求f(x)的二階導數存在。

matlab 用牛頓法求解方程

3樓:斷線的粢鳶

定義函式

function y=nd(x)

y= 0.036-((x/2090.7).^(1/0.1585))-x/182000

function y=nd0(x)

y=- (1/0.1585)*(x/2090.7).^(1/0.1585-1)*(1/2090.7) - 1/182000

主程式x=0.5; %迭代初值

i=0; %迭代次數計數

while i<=100;

y=x-nd(x)/nd0(x); %牛頓迭代格式if abs(y-x)>10^(-5); %收斂判斷x=y;

else break

endi=i+1;

endfprintf('\n%s%.4f \t%s%d','x=',x,'i=',i) %輸出結果

x=-100.5000 i=101

求c語言編寫 用牛頓迭代法解方程 x乘以e的x次冪減1等於0

4樓:匿名使用者

//求出迭代方程,根據牛頓的是,g(x)=x-f(x)/f'(x)//針對x*e^x-1=0,是g(x)=x-(xe^x-1)/(e^x+x*e^x);

#include

#includeint main()

printf("%.3f\n",y);

printf("%f\n",exp(y)*y);

return 0;

}//為了通用性,用乙個函式,來表示迭代方程double f(double x)

有方程,用牛頓迭代法,求位於(1, 2)的唯一實根並要求。

5樓:匿名使用者

#include

#include

double f(double x)

double f1(double x)

main( )

while((x>=2||x<=1)&&(hi>=0.5*1e-5));

printf("%lf",x);}

fabs函式調整一下,然後判斷改了下,你對照上面**看下就知道了

利用牛頓迭代法求方程根的函式c++

6樓:喵有引力

第(1)問**如下

#define fun1 5*p(x,9)+7*p(x,8)+10*p(x,7)+156*p(x,4)+89*p(x,3)+90*p(x,2)+101*x+50//函式

#define fun1_ 45*p(x,8)+56*p(x,7)+70*p(x,6)+156*4*p(x,3)+89*3*p(x,2)+180*p(x,1)+101//導數

#include

#include

using namespace std;

double p(double x,int n);

int main()

第(2)問

#define e 2.718281828459

#define fun2 x*pow(e,x)+p(x,5)*p(sin(x),3)

#define fun2_ pow(e,x)+x*pow(e,x)+4*p(x,4)*p(sin(x),3)+3*p(sin(x),2)*cos(x)*p(x,5)

#include

#include

using namespace std;

double p(double x,int n);

int main()

求乙個用牛頓迭代法解方程的matlab**。

7樓:匿名使用者

其中,fun()是原函式,dfun()是導函式

解方程x305,解方程x

x 3 0.5 12 x 2.5 12 x 12 2.5 x 9.5 x 12 2.5 x 9.5 x 12 3 0.5 9 0.5 9.5 解方程 x 3 0.5 12 5x x 3 35 x 3 0.5 12 x 2.5 12 x 12 2.5 x 9.5 5 x 3 35 x 3 35 5 x...

解方程 要帶過程!解方程,要過程!

3 10 x 1 25 1 4 x 3 10 1 25 1 4 x 30 100 4 100 25 100x 1 100 您好,很高興為您解答,skyhunter002為您答疑解惑。如果本題有什麼不明白可以追問,如果滿意記得。如果有其他問題本題後另發點選向我求助,答題不易,請諒解,謝謝。祝學習進步。...

解方程3234x,解方程3234x

3 4x 11 8 x 11 6 2x 30 46 5 2x 8.9 x 4.45 x 2 3 3 4 x 3 4 2 3 x 1 2 3 4x 33 2 4x 2 11 x 1 22 解方程3 4x 1 8 1 2 3 4x 1 2 1 8 3 4x 3 8 x 3 8 3 4 x 1 2 3 4...