diff options
Diffstat (limited to 'code/fsolve/SystemOfNLEquations.sce')
-rw-r--r-- | code/fsolve/SystemOfNLEquations.sce | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/code/fsolve/SystemOfNLEquations.sce b/code/fsolve/SystemOfNLEquations.sce new file mode 100644 index 0000000..f2db71f --- /dev/null +++ b/code/fsolve/SystemOfNLEquations.sce @@ -0,0 +1,57 @@ +//Reference: Edger, Hemmelblau and Lasdon,"OPtimization of chemical process", McGraw Hill, Chemical Engineering Series, 2nd edition, 2001, Appendix A + +//Solve the two non-linear equations +// X(1)^2 + X(2)^2 = 8 +// X(1)*X(2) = 4 +//===================================================================== +// Copyright (C) 2018 - IIT Bombay - FOSSEE +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt +// Author: Remya Kommadath +// Organization: FOSSEE, IIT Bombay +// Email: toolbox@scilab.in +//===================================================================== + +clc; +// Set of non-linear equations +function f = NLEquations(X) + f(1) = X(1)^2 + X(2)^2 - 8 + f(2) = X(1)*X(2) - 4 +endfunction +// Multiple initial guesses. User can give their choice of values here +Xinitials = [-5 0; 5 3] +Ninitial = size(Xinitials,1); +// Precision tolerance value +Tol = 0; + +// Solving the equations with different initial guesses +for n = 1:Ninitial + Xi = Xinitials(n,:); + mprintf('Initial guess No. %d \n',n) + disp(Xi) + [X,v,info] = fsolve(Xi,NLEquations,[],Tol); + // Result representation + select info + case 0 + disp("improper input parameters.") + case 1 + disp("algorithm estimates that the relative error between x and the solution is at most tol.") + disp(X,"solution reported") + disp(v, "Value of the function at the solution") + case 2 + disp("number of calls to fcn reached") + disp(X,"solution reported") + disp(v, "Value of the function at the solution") + case 3 + disp("tol is too small. No further improvement in the approximate solution x is possible.") + disp(X,"solution obtained") + disp(v, "Value of the function at the solution") + case 4 + disp("iteration is not making good progress.") + disp(X,"solution obtained") + disp(v, "Value of the function at the solution") + end +end |