Presentation is loading. Please wait.

Presentation is loading. Please wait.

ENGG 1801 Engineering Computing

Similar presentations


Presentation on theme: "ENGG 1801 Engineering Computing"— Presentation transcript:

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: x1 = 4 x2 = 2

6 Example (II) Use as initial estimate for solution (3, 3)
Next estimate obtained from: Functions evaluated at old point New point = (3.5714, ) Jacobian evaluated at old point Old point = (3, 3)

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.


Download ppt "ENGG 1801 Engineering Computing"

Similar presentations


Ads by Google