MATLAB牛頓迭代法

2021-10-03 15:22:01 字數 1297 閱讀 3447

這裡是乙個一元函式的簡單**:

%牛頓迭代法

function [x,n,xn,yn] = newiteration(fun,dfun,x0,eps)

% fun為目標函式,dfun為目標函式的一階導數,x0為起始點,eps為精度

a=feval(fun,x0);

b=a+1;

n=0;

%建立畫圖的點

xn = zeros(5,1);

yn = zeros(5,1);

while(abs(a-b) >= eps)

a = feval(fun,x0) ;

df = feval(dfun,x0);

xn(n+1,1) = x0;

yn(n+1,1) = a;

if (feval(dfun,x0) == 0)

break

else

x0 = x0 - a/df;

endb = feval(fun,x0);

n = n + 1;

endx = x0;

呼叫函式:

%% 呼叫函式

clear all

clc% syms x

fun=inline('x^2 - 9','x');

dfun = inline('2*x','x');

xn = zeros(5,1);

yn = zeros(5,1);

x0 = 1;

eps = 0.001;

[x,n,xn,yn] = newiteration(fun,dfun,x0,eps)

figure

plot(xn,yn,'k-','color','red')

hold on

x = 0:0.1:7;

y = x.^2 - 9;

y2 = zeros(1,71);

plot(x,y,'color','b')

plot(x,y2,'color','black')

執行結果:

x =3.000000001396984

n =5

迭代過程:

如果需要減少計算,可以通過將f′(

x0)\ f'(x_0)

f′(x0​

)設定為定值,收斂速度會減慢。

牛頓迭代法 matlab實現

牛頓迭代法又稱為切線法,簡單來說就是不斷求切線與x軸的交點,來逐漸接近解的迭代過程。方法使用函式f x 的泰勒級數的前面幾項來尋找方程f x 0的根。具體迭代的方法可以看度娘的解釋,或者相關的教材。今天來介紹下簡單的matlab的實現。使用了三個.m檔案來實現,分別是原函式 需要迭代的函式 檔案 牛...

MATLAB之牛頓迭代法

1 迭代公式 將 f x 在點xk做taylor展開f x f xk f xk x xk 則有 x k 1 x k f x k f x k 2 牛頓法的幾何意義 由上式可知,如果如果我們選擇x0作為初始點,點 x0,f x0 的切線方程為y f x0 f x0 x x0 該切線方程與x軸交點的橫座標...

牛頓迭代法

創新工廠的筆試題 不用庫函式sqrt 求乙個整型數n的開方,要求精度達到0.001即可。在這裡首先介紹一下牛頓迭代法 假設乙個方程為 f x 0 那麼假設其解為x0,則用泰勒級數展開之後可得 f x f x0 f x0 x x0 0 其中x為其近似解。根據上式推導出 x x0 f x0 f x0 這...