牛頓迭代法解非線性方程matlab實現

2021-06-25 13:44:46 字數 1825 閱讀 3407

1

.功能本程式採用牛頓法,求實係數高次代數方程

f(x)=a0xn+a1xn-1+

…+an-1x+an=

0 (an≠0)

(1)的在初始值x0

附近的乙個根。

2.使用說明

(1)函式語句

y=newton_1(a,n,x0,nn,eps1) 呼叫

m檔案newton_1.m。(

2)引數說明

a  n+1

元素的一維實陣列,輸入引數,按公升冪存放方程係數。

n整變數,輸入引數,方程階數。

x0 實變數,輸入引數,初始迭代值。

nn整變數,輸入引數,允許的最大迭代次數。

eps1

實變數,輸入引數,控制根的精度。

3.方法簡介

解非線性議程

f(x)=0

的牛頓法是把非線性方程線性化的一種近似方法。把

f(x)在x0

點附近展開成泰勒級數

f(x)=f(x0)+(x-x0)fˊ(x0)+(x-x0)2 +…

取其線性部分,作為非線性方程

f(x)=0

的近似方程,則有

f(x0)+fˊ(x0)(x-x0)=0設f

ˊ(x0)

≠0則其解為

x1=x0-f(x0)/fˊ(x0)

再把f(x)在x1附近展開成泰勒級數,也取其線性部分作f(x)=0的近似方程。若f(x1)≠0,則得

x2=x1-f(x1)/fˊ(x1)

這樣,得到牛頓法的乙個迭代序列

xn+1=xn-f(xn)/fˊ(xn)

4.newton_1.m程式

function y=ne

wton_1(a,n,x0,nn,eps1)

x(1)=x0;

b=1;

i=1;

while(abs(b)>eps1*x(i))

i=i+1;

x(i)=x(i-1)-n_f(a,n,x(i-1))/n_df(a,n,x(i-1));

b=x(i)-x(i-1);

if(i>nn)error(ˊnn is fullˊ);

return;

endend

y=x(i);

i程式中呼叫的n_f.m和n_df.m檔案如下:

function y=n_df(a,n,x)%方程一階導數的函式

y=0.0;

for i=1:n

y=y+a(i)*(n+1-i)*x^(n-i);

endfunction y=n_df(a,n,x)

y=0.0;

for i=1:n

y=y+a(i)*(n+1-i)*x?(n-i);

end5

.程式附註

(1)程式中呼叫n_f.m和n_df.m檔案。n_f.m是待求根的實數代數方程的函式,n_df.m是方程一階導數的函式。由使用者自己編寫。

(2)牛頓迭代法的收斂速度:如果

f(x)

在零點附近存在連續的二階微商,ξ是

f(x)

的乙個重零點,且初始值x0充分接近於ξ,那麼牛頓迭代是收斂的,其收斂速度是二階的,即平方收斂速度。

6.例題

用牛頓法求下面方程的根

f(x)=x3+2x2+10x-20

7.執行結果

>>a=[1,2,10,-20] ;

>>n=3;

>>x0=1;

>>nn=1000;

>>eps1=1e-8;

>>y=newton_1(a,n,x0,nn,eps1)

y=1.368808107821373e+000i=6

牛頓迭代法求解非線性方程 C

一 牛頓迭代法演算法 設 已知 第1步計算函式 第2步計算雅可比矩陣 第3步求線性方程組的解 第4步計算下乙個點 重複上述過程。二 牛頓迭代法c 程式 牛頓迭代解非線性方程組 include include using namespace std double f1 double x double ...

非線性方程求根迭代法

一 寫在前面 實驗目的 1 熟悉非線性方程求根簡單迭代法,牛頓迭代及牛頓下山法 2 能程式設計實現簡單迭代法,牛頓迭代及牛頓下山法 3 認識選擇迭代格式的重要性 4 對迭代速度建立感性的認識 分析實驗結果體會初值對迭代的影響 實驗內容 本次實驗參考公式 二 實驗過程 參考 include inclu...

第2 1課 非線性方程與牛頓迭代法

在數值分析領域中,人們通常使用迭代法 逼近法和做圖等方法來求解一些複雜問題的近似解,其中迭代法是一類利用遞推公式或迴圈演算法通過構造序列來求問題近似解的方法,把這種迭代求解數學問題的方法直接體現在演算法中,就可以認為是設計領域中的迭代法。在 演算法設計常用思想之貪婪法 分治法和迭代法 這幾課中我們介...