1 / 10

ENGG 1801 Engineering Computing

ENGG 1801 Engineering Computing. MATLAB Lecture 7 : Tutorial Weeks 11-13 Solution of nonlinear algebraic equations (II). Outline of lecture. Solving sets of nonlinear equations Multivariable Newton’s method Example (2 equations in 2 unknowns) Solving example problem in Matlab Functions

nate
Télécharger la présentation

ENGG 1801 Engineering Computing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ENGG 1801Engineering 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, 2.0952) 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.

More Related