Top Banner
數數數數2008, Applied Mathematics NDHU 數數數數2008, Applied Mathematics NDHU 1 Nonlinear systems Nonlinear systems Newton’s method Newton’s method The steepest descent The steepest descent method method
42

數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

Dec 14, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 11

Nonlinear systemsNonlinear systems

Newton’s methodNewton’s method

The steepest descent methodThe steepest descent method

Page 2: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 22

Nonlinear systemsNonlinear systems

A general system of n nonlinear equations in n unknowns

Page 3: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 33

ExampleExample

Page 4: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 44

myfunmyfun

function F = myfun(x) F(1) = 3*x(1)-cos(x(2)*x(3))-1/2; F(2) = x(1).^2 -81*(x(2)+0.1).^2+sin(x(3))+1.06; F(3) = exp(-x(1)*x(2))+20*x(3)+1/3*(10*pi-3);return

Page 5: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 55

Page 6: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 66

x0= rand(1,3)-0.5; x = lsqnonlin(@myfun,x0); y=myfun(x); sum(y.^2);

Solve nonlinear systemsSolve nonlinear systems

Page 7: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 77

Demo_ex1Demo_ex1

demo_ex1.m

Page 8: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 88

Newton’s method -Tangent lineNewton’s method -Tangent line

xxn

y=f(x)

yn=f(xn)

xn+1

Page 9: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 99

Updating ruleUpdating rule

Page 10: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1010

Newton’s methodNewton’s method

Page 11: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1111

Flow ChartFlow Chart

n=0n=0; guess xx00

Halting condition

T

F

Page 12: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1212

Matlab codingMatlab coding

Matlab modules:1. 3-variable function evaluation2. Use symbolic differentiation to determine partial derivatives3. Evaluate partial derivatives4. Main program: use a while loop to update x iteratively

Page 13: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1313

Function evaluationFunction evaluation

s1='3*x1-cos(x2*x3)-1/2'; f=inline(s1);x=rand(1,3);y=f(x(1),x(2),x(3));

Page 14: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1414

Evaluation of vector functionEvaluation of vector function

s1='3*x1-cos(x2*x3)-1/2'; s2='x1.^2 -81*(x2+0.1).^2+sin(x3)+1.06'; s3='exp(-x1*x2)+20*x3+1/3*(10*pi-3)';f1=inline(s1); f2=inline(s2);f3=inline(s3);x=rand(1,3);Y=f1(x(1),x(2),x(3));Y=[Y f2(x(1),x(2),x(3))];Y=[Y f3(x(1),x(2),x(3))];

Page 15: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1515

Variant function formVariant function form

s='x1+x2'; f=inline(s);x=rand(1,3);y=f(x(1),x(2),x(3));

Error message:Too many input to inline function

s='x1+x2'; f=inline(s);x=rand(1,3);y=f(x(1),x(2));

Correct codes

Page 16: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1616

s='x1+x3'; f=inline(s);x=rand(1,3);y=f(x(1),x(3));

Correct codes

s='x2+x3'; f=inline(s);x=rand(1,3);y=f(x(2),x(3));

Correct codes

Page 17: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1717

s='1'; f=inline(s);x=rand(1,3);y=f(0);

Correct codes

s='x1+x2+x3'; f=inline(s);x=rand(1,3);y=f(x(1),x(2),x(3));

Correct codes

Page 18: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1818

symvar

sc=symvar(f); f denotes an inline functionf denotes an inline functionsc is a cell structuresc is a cell structure

Symbols in fSymbols in f

Page 19: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 1919

Symbols in an inline functionSymbols in an inline function

s='x1+x2'; f=inline(s);

s='x1+x3'; f=inline(s);

s='x2+x3'; f=inline(s);

s='1';f=inline(s);

s='x1+x2+x3'; f=inline(s);

sc=symvar(f);

sc =

'x1' 'x2'

sc =

'x1' 'x3'

sc =

'x2' 'x3'

sc =

'x'

sc =

'x1' 'x2' 'x3'

y=f(x(1),x(2)); y=f(x(1),x(3)); y=f(x(2),x(3)); y=f(0); y=f(x(1),x(2),x(3));

Page 20: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2020

3-variable function evaluation3-variable function evaluation

f: an inline functionf: an inline functionxx: a string for 3-variable function evaluation xx: a string for 3-variable function evaluation

xx=fun3v(f)xx=fun3v(f)

Page 21: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2121

function xx=fun3v(f)s=symvar(f);xx=[];for i=1:size(s,1) if i>1 xx=[xx ',']; end arg=char(s(i)); switch arg case 'x' xx=[xx '0']; case 'x1' xx=[xx 'x(1)']; case 'x2' xx=[xx 'x(2)']; case 'x3' xx=[xx 'x(3)']; end endxx=['f(' xx ')'];return

Newton\fun3v.m

Page 22: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2222

exampleexample

s='x1+x2'; f=inline(s);

s='x1+x3'; f=inline(s);

s='x2+x3'; f=inline(s);

s='1';f=inline(s);

s='x1+x2+x3'; f=inline(s);

xx=fun3v(f)x=[1 2 3]eval(xx)

Page 23: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2323

3-variable function evaluation3-variable function evaluation

function v=feval3v(f,x)xx=fun3v(f);eval(xx)return

Page 24: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2424

Matlab codesMatlab codesfunction v=feva(f,x)s=symvar(f);xx=[];for i=1:size(s,1) ss=char(s(i)); switch ss case 'x' xx=[xx 0]; case 'x1' xx=[xx x(1)]; case 'x2' xx=[xx x(2)]; case 'x3' xx=[xx x(3)]; endend

xx=['f(' xx ')'];v=eval([sprintf(xx)]);return

feva.m

Page 25: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2525

Partial derivationPartial derivations='3*x1-cos(x2*x3)-1/2';fx=inline(s);fx=inline(s);x1=sym('x1');x1=sym('x1');x2=sym('x2');x2=sym('x2');x3=sym('x3');x3=sym('x3');J1=inline(diff(s,x1))J1=inline(diff(s,x1))J2=inline(diff(s,x2))J2=inline(diff(s,x2))J3=inline(diff(s,x3))J3=inline(diff(s,x3))

Page 26: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2626

function [J1,J2,J3]=pdiff(s)function [J1,J2,J3]=pdiff(s)Newton\pdiff.m

Page 27: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2727

ExampleExamples='3*x1-cos(x2*x3)-1/2';[J1 J2 J3]=pdiff(s)J1 = Inline function: J1(x) = 3J2 = Inline function: J2(x2,x3) = sin(x2.*x3).*x3J3 = Inline function: J3(x2,x3) = sin(x2.*x3).*x2

Page 28: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2828

Partial derivativesPartial derivatives

s1='3*x1-cos(x2*x3)-1/2';s2='x1^2 -81*(x2+0.1)^2+sin(x3)+1.06';s3='exp(-x1*x2)+20*x3+1/3*(10*pi-3)';[J1 J2 J3]=pdiff(s1);[J4 J5 J6]=pdiff(s2);[J7 J8 J9]=pdiff(s3);

Page 29: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 2929

Newton\demo.m

Page 30: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3030

Function x=Newton(s1,s2,s3,x0)Function x=Newton(s1,s2,s3,x0)

s1: string of function f1s1: string of function f1

s2: string of function f2s2: string of function f2

s3: string of function f3s3: string of function f3

x0: initial guessx0: initial guess

Page 31: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3131

%% Determine F(1), F(2), F(3) by substituting x to f1, f2 and f3%% Determine J by substituting x to J1, J2,…, J9% % Update x

Page 32: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3232

ExerciseExercise

Write matlab codes to implement the Write matlab codes to implement the Newton’s method for solving a three-Newton’s method for solving a three-variable nonlinear systemvariable nonlinear system

Test your matlab function with the Test your matlab function with the following nonlinear systemfollowing nonlinear system

Page 33: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3333

The steepest descent methodThe steepest descent method

is translated to minimize

Page 34: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3434

GradientGradient

Page 35: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3535

Iterative processIterative process

Page 36: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3636

Page 37: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3737

Newton’s method

Steepest gradient descent method

Page 38: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3838

Steepest descentSteepest descent

Choose to minimize Choose to minimize

Page 39: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 3939

Page 40: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 4040

01 5.02 13

))0(,0( h

))5.0(,5.0( h

))1(,1( h

Quadratic polynomial:

23

2

13

13

32

3

12

12

31

3

21

21

)(

)()()(

h

hhP

Page 41: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 4141

Page 42: 數值方法 2008, Applied Mathematics NDHU 1 Nonlinear systems Newton’s method The steepest descent method.

2008, Applied Mathematics NDHU數值方法2008, Applied Mathematics NDHU數值方法 4242

1.1. CreateCreate three nonlinear inline functionsthree nonlinear inline functions

2.2. Create nine inline functions for partial derivatives of the three Create nine inline functions for partial derivatives of the three nonlinear functionsnonlinear functions

3.3. Set x to x0Set x to x0

4.4. While the halting condition is not satisfiedWhile the halting condition is not satisfied Substitute x to all partial derivatives to form a 3x3 matrix JSubstitute x to all partial derivatives to form a 3x3 matrix J Substitute x to the three nonlinear functionsSubstitute x to the three nonlinear functions Find optimal Find optimal Update x by the steepest descent methodUpdate x by the steepest descent method

5.5. Return xReturn x

Function x=Steepest(s1,s2,s3,x0)Function x=Steepest(s1,s2,s3,x0)