Need help to put condition in my optimization function
조회 수: 1 (최근 30일)
이전 댓글 표시
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
댓글 수: 0
채택된 답변
Torsten
2019년 8월 19일
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
Torsten
2019년 8월 26일
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)
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Direct Search에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!