Intersection of piecewise defined functions.
6 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I would like to calculate the value for that two functions are equal:
function no. 1:
F_2_origin_cond = (1-((1- wblcdf(t-delta12_origin,eta_hat_2,beta_hat))./(1-Age_t1_origin))).*(t>=2000);
F_2_origin_cond = 0.*(t<2000);
function no. 2:
y=0.876;
Does somebody know if it is possible in MATLAB?
0 件のコメント
採用された回答
Walter Roberson
2016 年 2 月 3 日
By examination, the first function is 0 for all t < 2000 . That cannot possibly be 0.876. So the question comes down to finding (1-((1- wblcdf(t-delta12_origin,eta_hat_2,beta_hat))./(1-Age_t1_origin))) == 0.876 and if the answer is < 2000 then discard that answer.
F_2_origin_cond = @(t) (1-((1- wblcdf(t-delta12_origin,eta_hat_2,beta_hat))./(1-Age_t1_origin))) - 0.876;
t_target - fzero(F_2_origin_cond, [max(2000,deltal2_origin), inf])
The max() is there to select between the greatest of 2000 (the part at which the equation becomes valid) and delta12_origin, as wblcdf(t-delta12_origin,...) will be 0 for t < delta12_origin .
3 件のコメント
その他の回答 (1 件)
John D'Errico
2016 年 2 月 3 日
編集済み: John D'Errico
2016 年 2 月 3 日
Of course it is possible.
Hint: subtract the two, then search for a root. This applies even if one of the functions is not constant, as it is here.
So, you could use a numerical solver. Or you could use a symbolic solver.
As far as the function being a piecewise one, that is not relevant, since for t < 2000, the function is trivially zero, therefore the two can never be equal in that domain. So all that matters is you find a root of the difference above 2000 for t.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!