Download presentation
Presentation is loading. Please wait.
1
ENGG 1801 Engineering Computing MATLAB Lecture 7: Tutorial Weeks 11-13 Solution of nonlinear algebraic equations (II)
2
Outline of lecture Solving sets of nonlinear equations Multivariable Newton’s method Example (2 equations in 2 unknowns) Solving example problem in Matlab Functions Conclusions
3
Sets of Nonlinear Equations Equation sets can be large – 100’s (1000’s) of equations – Initial solution estimate can be a challenge Fewer solution options – Plotting and direct substitution are not options Most widely used approach ? – Multivariable Newton’s method
4
Multivariable Newton’s Method Single variable algorithm – Each iteration solves a linear approximation to function Multivariable algorithm – Each function approximated by a linear equation – Each iteration solves a set of linear equations Scalar equation Vector-matrix equation
5
Example (I) Solve the pair of equations: Elements of the Jacobian matrix Solution is: x 1 = 4 x 2 = 2
6
Example (II) Use as initial estimate for solution (3, 3) Next estimate obtained from: New point = (3.5714, 2.0952) Old point = (3, 3) Jacobian evaluated at old point Functions evaluated at old point
7
Solution in Matlab counter = 1; error = 10; xold = [3;3]; while error > 1e-3 & counter < 10 fold(1) = xold(1) - xold(2)^2; fold(2) = xold(1)*xold(2) - 8; J(1,1) = 1; J(1,2) = -2*xold(2); J(2,1) = xold(2); J(2,2) = xold(1); xnew = xold - inv(J)*fold' error = max(abs(xnew(1)-xold(1)),abs(xnew(2)-xold(2))); counter = counter + 1; xold = xnew; end
8
Advice on Iterative Methods Follow one cycle through code by hand Initially use modest convergence criterion Put in a ‘counter’ ( to prevent infinite loop ) Check final solution – Be prepared for multiple solutions Initial guess has a big impact: – On the final solution obtained – On the time taken to converge to solution
9
Functions Breaking up complex calculations into simpler blocks. Main program – a = 2; b = 3; – [answer, diff] = my_function(a,b) Separate file, my_function.m; outputs calculated inside function using input arguments (in1 & in2) – function [answ, differ] = my_function(in1,in2) – answ = in1 + in2; – differ = in1 – in2; One to one correspondence between inputs, outputs in calling statement and in function
10
Conclusions Solution of nonlinear equation sets ? – Very common problem in engineering Built-in Matlab functions ( e.g. fsolve from MATLAB’s Optimization Toolbox) – User supplied Jacobian speeds convergence – If unavailable → Matlab gets by finite differencing – User has to supply initial estimate of solution Make your own functions to split up a big problem into simpler pieces.
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.