В Mathematica 8.0.1.0 я использовал FindRoot[]
для определения пересечения двух 2-х pdf-функций.
Но если у меня есть pdf-функции, которые пересекаются более чем в одной точке, и у меня есть верхняяпредел диапазона оси x за пределами второго пересечения, FindRoot[]
возвращает только второе пересечение.
pdf1 = 1/x 0.5795367855565214` (E^(
11.170058830053032` (-1.525439351903338` - Log[x]))
Erfc[1.6962452696714152` (-0.5548887795964352` - Log[x])] +
E^(1.2932713057519` (2.60836043407439` + Log[x]))
Erfc[1.6962452696714152` (2.720730943938539` + Log[x])]);
pdf2 = 1/x 0.4648445097126269` (E^(
5.17560914275408` (-2.5500941338198615` - Log[x]))
Erfc[1.7747318880142482` (-2.139288893723375` - Log[x])] +
E^(1.1332542415053757` (3.050849516581922` + Log[x]))
Erfc[1.7747318880142482` (3.1407996592474956` + Log[x])]);
Plot[{pdf1, pdf2}, {x, 0, 0.5}, PlotRange -> All] (* Shows 1st intersection *)
Plot[{pdf1, pdf2}, {x, 0.4, 0.5}, PlotRange -> All] (* Shows 2nd intersection *)
{x /. FindRoot[pdf1 == pdf2, {x, 0.00001, 0.5}],
x /. FindRoot[pdf1 == pdf2, {x, 0.00001, 0.4}]}

Приведенные выше графики показывают проблему.При построении они пересекаются в двух точках:
{0.464719, 0.0452777}
соответственно.
Поскольку я не могу знать заранее, будет ли у меня второе пересечение, и я не знаю, где оно можетесли я упал на ось х, может кто-нибудь предложить способ, чтобы FindRoot[]
возвращал только первое пересечение, а не второе?
Если нет, может кто-нибудь предложить другой способ сделать это?