Need help to put condition in my optimization function

Here is my code:
function T0=tw0Solve(t1,s1,s2,rho,P)
T0= fsolve(@(tw0) (exp(-s2.^2./2).*exp(tw0.*s2).*(1-qfunc((t1-s1-rho.*tw0+rho.*s2)./sqrt(1-rho.^2)))./(1-qfunc((t1-rho.*tw0)./sqrt(1-rho.^2))))-P,rand);
end
Where for a given t1 we are trying to find tw0 that minimizes the function T0. But for some initial value the qfunc((t1-s1-rho.*tw0+rho.*s2)./sqrt(1-rho.^2)) becomes =1 which starts to provide error in fsolve as i start to get 0/0 form. How can I put a condition in this that helps me do something like this while it searches for tw0 and encounters a 0/0 form .
if qfunc(t1,tw0) < -3
T0=()
else
T0=()
end

 Respuesta aceptada

Torsten
Torsten el 19 de Ag. de 2019
T0= fsolve(@(tw0) (exp(-s2.^2./2).*exp(tw0.*s2).*(1-qfunc((t1-s1-rho.*tw0+rho.*s2)./sqrt(1-rho.^2))))-P*(1-qfunc((t1-rho.*tw0)./sqrt(1-rho.^2))),rand);

6 comentarios

Hello , the ratio is (1-q())./(1-q())-P
But what u are suggesting is (1-q())-p*(1-q()) which changes my original equation
Torsten
Torsten el 20 de Ag. de 2019
I multiplied the equation by the denominator of the first expression which doesn't change the solution.
Yes, I didnt see that, Thanks for helping but u know any different way to do it?
Torsten
Torsten el 23 de Ag. de 2019
Why ? Doesn't it solve your problem ?
No, it still gives errors for some initial value of two when the initial conditions(s1,s2,rho) changes. Is there a way to put restrictions on two while fsolve function searches for two?
Torsten
Torsten el 26 de Ag. de 2019
Plotting the function which produces problems in the relevant range for "two" might help to get a reasonable initial guess and to identify the cause of errors:
two = linspace(a,b,n);
ftwo = (exp(-s2.^2./2).*exp(tw0.*s2).*(1-qfunc((t1-s1-rho.*tw0+rho.*s2)./sqrt(1-rho.^2))))-P*(1-qfunc((t1-rho.*tw0)./sqrt(1-rho.^2)));
plot (two,ftwo)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Preguntada:

el 16 de Ag. de 2019

Comentada:

el 26 de Ag. de 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by