How to determine a limit of integration from a known integral?

Alternatively, you can rephrase the problem as a differential equation and use NDSolve:

eq[x_] := 1/(x (-1.66334 - 0.44 Log[x] + 1.66116 x));
sol = First@NDSolve[{u'[t] == 1/eq[u[t]], u[0] == 1}, u, {t, 0, 14}];
uVals = Table[u[t] /. sol, {t, 0, 14}]
NIntegrate[eq[x], {x, 1, #}] & /@ uVals
{1., 0.995745, 0.981588, 0.936796, 0.814854, 0.583019, 0.334263, 0.177939, 
 0.102363, 0.0669098, 0.0492174, 0.0396957, 0.0342333,0.0309452, 0.0288969}

{0., 1.00001, 2.00001, 3.00001, 4.00001, 5.00001, 6.00001, 7.00001, 
 8.00001, 9.00001, 10., 11., 12., 13., 14.}

The integrand has poles at

Solve[1/eq[x] == 0, x]
{{x -> 0.0250815}, {x -> 1.00178}}

as well as x == 0, but these are exactly avoided by the solutions in uVals.


NIntegrate can't deal with an undecided limit. So you can't directly use u here.

I tried Plot, but it looks messy.

Plot[NIntegrate[eq, {ξ, 1, x}], {x, 1, 5}]

enter image description here


Edited:

Plot[NIntegrate[eq, {ξ, 1, x}], {x, 0.1, 1}]

enter image description here


Anyway, you may want this:

expr[u_?NumericQ] := NIntegrate[ξ^2 + ξ, {ξ, 1, u}];
FindRoot[expr[u] == 1, {u, 1}] // Quiet

Which will return you a numeric solution. (I change the expression to get a solution)


From the new information, I get this:

FindRoot[NIntegrate[eq, {ξ, 1, u}] == 6, {u, 0.2}]

{u -> 0.334265}