這裡是乙個一元函式的簡單**:
%牛頓迭代法
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 這...