Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Here is the equation I'm trying to solve:

NIntegrate[1/(E^(1/(λ T)) - 1), {λ, 200, 220}] == 1000

T is the parameter I'm trying to work out. I tried to solve it with InverseFunction[] but it seemed not to work:

te[ii_] := InverseFunction[NIntegrate[1/(-1 + E^(1/(# λ))), {λ, 200, 220}] &][ii]
Evaluate[te[1000]]

What's wrong with my solution? How to correct it?

share|improve this question

2 Answers 2

up vote 8 down vote accepted

Here's a slight improvement of b.gatessucks's answer, adding a (mostly effective) initial guess:

te[ii_?NumericQ, opts___] := (\[FormalCapitalT] /. First@FindRoot[
     NIntegrate[1/(E^(1/(λ \[FormalCapitalT])) - 1), {λ, 200, 220}] == ii,
         {\[FormalCapitalT], (0.5437727672315316 + ii (0.5440978395984463 + 
                             ii (0.12244298721801757 + (0.009523809523809525 + 
                             0.0002380952380952381 ii) ii)))/(476.1910924718744 +
                             ii (247.61910924718742 + ii (30. + ii)))}, 
            Evaluated -> False, opts])

Here's how I obtained the initial guess:

PadeApproximant[InverseSeries[
    Integrate[#, {λ, 200, 220}] & /@ 
      Normal[Series[1/(E^(1/(λ ii)) - 1), {ii, Infinity, 7}]] + O[ii, Infinity]^8],
                {ii, Infinity, 4}] // N // FullSimplify
share|improve this answer
    
Wow, what a advanced solution…Er, I wonder where I can find the introduction of Evaluated, I can't find it in the help, and, it seems that PadeApproximant here isn't necessary, why you choose it? –  xzczd Aug 1 '12 at 11:42
    
The Evaluated option is indeed undocumented, but it has been discussed a lot on this site; search around. As for PadeApproximant[], it's for generating a rational function approximation; they tend to be more accurate than truncations of Taylor polynomials for the same amount of arithmetic operations. –  J. M. Aug 1 '12 at 12:05
    
For example this? OK, it's very interesting, now…I'm sorry! But I still can't understand the independent variable opts___ which I thought I would make it out after I knew the meaning of Evaluated… –  xzczd Aug 1 '12 at 13:07
    
The opts is for the case where you need to pass options to FindRoot[]. Now that I think about it, I should have also made provisions for passing options to NIntegrate[]... maybe later. –  J. M. Aug 1 '12 at 13:19
    
So, here I can just remove it? (Trying…) ………er, it seems that the ?NumericQ and Evaluated(whether it's True or False) are both unnecessary now… –  xzczd Aug 1 '12 at 13:36

You can use FindRoot :

func[T_?NumericQ] :=  NIntegrate[1/(E^(1/(\[Lambda] T)) - 1), {\[Lambda], 200, 220}]

sol = FindRoot[func[T] == 1000, {T, 0.1}]

(* {T -> 0.240468} *)

func[sol[[1, 2]]]

(* 1000. *)

FindRoot needs an initial guess for the unknown; you can get a rough estimate by plotting func for instance.

share|improve this answer
    
Maybe for this case the initial guess isn't that important since the te[ii] is actually monotonous? –  xzczd Aug 1 '12 at 13:12
    
@xzczd I agree. –  b.gatessucks Aug 1 '12 at 13:24

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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