0
$\begingroup$

I am trying to solve the problem below with FindRoot. At first it works well, but when I change the constants in my equation the solver returns with the message:

FindRoot: Power: Infinite expression 1/0. encountered.

What does this means? Is there no solution for the system with the new values in e2?

Also when I put M -> 10 in data, another message appears for icmsol1:

FindRoot:Failed to converge to the requested accuracy or precision within 100 iterations.

data = {M -> 1, To -> 280.5, T∞ -> 254}

μv = {3.9300, 7.3663, 10.6438, 13.8624, 17.0535, 20.2295, 23.3965, 26.5574, 29.7144, 32.8684}

fi = (To (Sin[μ[j][0]] - Cos[μ[j][0]] μ[j][0]))/(T∞ μ[j][0]^2)

Ni[τ_, j_] = Integrate[Sin[μ[j][τ]*x]^2, {x, 0, 1}]

fr = T1^3
f2 = 1/T1

e1 = Table[(mi*Cos[mi] + ((1*fr - 1 - 0.5*f2) /. T1 -> Sum[Sin[μ[j][0]]*(1/Ni[0, j])*fi, {j, M /. data}])*Sin[mi] == 0) /. mi -> μ[i][0], {i, M /. data}]

e2 = Table[(mi*Cos[mi] + ((0.00122275*fr - 0.879355 - 1.67153*f2) /. T1 -> Sum[Sin[μ[j][0]]*(1/Ni[0, j])*fi, {j, M /. data}])*Sin[mi] == 0) /. mi -> μ[i][0], {i, M /. data}]

CImsys = Table[{μ[i][0], μv[[i]]}, {i, M /. data}]

icmsol1 = FindRoot[e1 /. data, CImsys]

icmsol2 = FindRoot[e2 /. data, CImsys]
$\endgroup$
  • 2
    $\begingroup$ It means something was divided by zero in the course of trying to find the root. You might need a better starting point for the root search. You also might want to inspect your functions (if you haven't) to make sure they look right. $\endgroup$ – Michael E2 Aug 13 at 20:28
  • $\begingroup$ Thank you Michael. $\endgroup$ – Igor Aug 16 at 21:37
2
$\begingroup$

Your problem is that for e2 your solution is zero and your function blows up at μ[1][0] == 0. This can be seen if we plot.

Plot[Evaluate[(e2 /. data)[[1, 1]]], {μ[1][0], -10, 10}]

enter image description here

From the plot it looks like your root is at zero. If you try to verify with a straight calculation:

(e2 /. data)[[1, 1]] /. μ[1][0] -> 0;

you will get an infinite expression which is why FindRoot was unsuccessful. If you take the limit, however:

Limit[(e2 /. data)[[1, 1]], μ[1][0] -> 0]
(*0.*)

You get verification that the root is zero.

For greater values of M, I suggest you use exact numbers in your given data, and increase the WorkingPrecision for FindRoot. That should solve your convergence problems.

$\endgroup$
  • $\begingroup$ Thanks Bill. Your answer was very helpful. I think there is something wrong with my equation, I was not expecting only one root for it. $\endgroup$ – Igor Aug 18 at 21:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.