利用Newton Raphson、最陡梯度法求解函数最小值

牛顿法Newton'smethod)又称为牛顿-拉弗森方法Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法,迭代的示意图如下:



求解问题:

1.无约束函数f的0点。

2.无约束函数f的最小值,最大值。



2. 利用Newton Raphson、最陡梯度法求解 f(x,y) = (1- x)^2 + 100*(y - x^2)^2 的最小值

(一)利用Newton Raphson方法求解

MATLAB代码如下:

%利用 Newton Raphson 方法求解 f(x,y) = (1 - x)^2 + 100*(y - x^2)^2 的最小值

clc
clear all

a = 0;
b = 0;
u = [a b]';
m = -2;
n = 0;
while abs(m) > 1.0e-5 || abs(n) >1.0e-5
    A = [m    n]';
    B = [2 + 400*(3*a^2 - b)     -400*a; -400*a     200];
    u = u - B\A;
    a = u(1);
    b = u(2);
    m = 2*(a - 1) + 400*(a^3 - a*b) ;
    n = 200*(b - a^2);
end

%最终求得的最小值点
u

(二)利用最陡梯度法求解

MATLAB代码如下:

%利用 最陡梯度法 求解 f(x,y) = (1 - x)^2 + 100*(y - x^2)^2 的最小值

clc
clear all

a = 0;
b = 0;
u = [a   b]';

%此处的h不能取太大,否则震荡发散
h = 0.001;

m = -2;
n = 0;
while  abs(m) > 1.0e-5 || abs(n) > 1.0e-5
    A = [m      n]';
    u = u - h*A;
    a = u(1);
    b = u(2);
    m = 2*(a - 1) + 400*(a^3 - a*b);
    n = 200*(b - a^2);
end

%最终求得的最小值点
u


你可能感兴趣的:(Algorithm)