Le 05/11/12 14:53, Adrien Vogt-Schilb a écrit :
On 05/11/2012 14:45, Paul Carrico wrote:
All,
Thanks for the feedback ...
... a basic plot shows the curve is monotonic (see attachment) ; I should plot
a 3D curve in order to study the influence of the exponents for example to
verify there's one and only one root ...
... I've to code a fast function to solve this kind of equation ... hundred
thousand (and maybe million) of similar equation to solve :-~
hi
beware not to use one single fsolve to solve a set of independent
equations;
somethign like
function [a b] = f(x,y)
a=x^3 -1
b= y^(0.6456) +4y^.45 - .566
endfunction
fsolve([0 0],f)
this is a bad idea, because fsolve will systematically calculate db/dx
and da/dy, this would take much longer and much more memory than just
fsolving x^3 -1, and then y^(0.6456) +4y^.45 - .566
of course this is much worse when you have N outputs and N inputs to
your function, in this case fsolve calculates N^2 derivatives at each
step...
fsolve is clearly missing a "jacobian pattern" option...
S.
That's one of the reasons why I asked about the possible parallelization
Regards
Paul
-----Message d'origine-----
De :users-boun...@lists.scilab.org [mailto:users-boun...@lists.scilab.org] De
la part demichael.bau...@contrib.scilab.org
Envoyé : lundi 5 novembre 2012 13:59
À : International users mailing list for Scilab.
Objet : Re: [Scilab-users] root calculation
Hi,
This is a nonlinear equation, for which we are searching a zero.
The fsolve function is designed for this purpose:
http://help.scilab.org/fsolve
Notice that there might not be a solution. This is why the algorithm is an
optimization problem, where the square norm of f(x) is minimized.
This method also works for a system of nonlinear equations, so that this is
(much) more general than dichotomy, secant, Brent, etc... which are
one-variable solvers.
No 1-variable method is available at the Scilab level, to my knowledge.
But the Brent method is used internally in the computation of the inverse Cumulated
Distribution Function (quantile) by the DCDFLIB library (e.g.
X=cdfnor("X",Mean,Std,P,Q)). Notice that Matlab has the fzero function :
http://www.mathworks.fr/fr/help/matlab/ref/fzero.html
which uses Brent's method.
But this method is not available directy in Scilab. This is a good design
choice in my opinion, since fsolve is much more general. But I guess that fzero
may be faster and more robust, in some cases.
Best regards,
Michaël
Le 2012-11-05 13:13, Paul Carrico a écrit :
Dear all,
This a stupid question, but how can I solve directly in, Scilab an
equation such as :
0.403*X^(-0.121) + 60.5*X^(-0.73) - 0.1839 = 0
?
Is-it necessary to code a function ? from memory : dichotomy method,
secant method, Brent one etc. ...
Regards
Paul
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users