Intersection of piecewise defined functions.
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Max
il 3 Feb 2016
Commentato: Walter Roberson
il 3 Feb 2016
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 Commenti
Risposta accettata
Walter Roberson
il 3 Feb 2016
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 Commenti
Più risposte (1)
John D'Errico
il 3 Feb 2016
Modificato: John D'Errico
il 3 Feb 2016
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.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!