0
$\begingroup$

I have the following function of three variables:

sbbf[ω_,κ2_,g2_]:=(38.4` g2^2 Sqrt[κ2^2])/(16 g2^4 (1/100000000 + 
   4 ω^2) + (κ2^2 + 4 ω^2) (16 + 
   8 (1/10000 - 4 ω^2) + (1/100000000 + 4 ω^2) (1 + 
      4 ω^2)) + 
8 g2^2 ((κ2 - 4 ω^2) (1/100000000 + 4 ω^2) + 
   4 (κ2/10000 + 4 ω^2))) + (9.6` (κ2^2 + 
  4 ω^2))/(16 g2^4 (1/100000000 + 
   4 ω^2) + (κ2^2 + 4 ω^2) (16 + 
   8 (1/10000 - 4 ω^2) + (1/100000000 + 4 ω^2) (1 + 
      4 ω^2)) + 
8 g2^2 ((κ2 - 4 ω^2) (1/100000000 + 4 ω^2) + 
   4 (κ2/10000 + 4 ω^2))) + (0.0122` (16 g2^4 + 
  8 g2^2 (κ2 - 4 ω^2) + (1 + 
     4 ω^2) (κ2^2 + 4 ω^2)))/(16 g2^4 (1/
   100000000 + 4 ω^2) + (κ2^2 + 4 ω^2) (16 + 
   8 (1/10000 - 4 ω^2) + (1/100000000 + 4 ω^2) (1 + 
      4 ω^2)) + 
8 g2^2 ((κ2 - 4 ω^2) (1/100000000 + 4 ω^2) + 
   4 (κ2/10000 + 4 ω^2)))

I wish to integrate sbbf with respect to ω. I do the following:

T = 
Table[{cc2, 
NIntegrate[
Evaluate[(sbbf /. {g2 -> 
      Sqrt[ cc2]/2*Sqrt[κ1*κ2]}) /. { κ2 -> 
    10.}], {ω, -100, 100}]}, {cc2, 0, 100, 0.1}]

And I run into an error that says: the integrand sbbf has evaluated to non-numerical values for all sampling points in the region with boundaries {{0,100}}. I proceed to look about this online and found something that seemed relevant from this article: http://support.wolfram.com/kb/12502

From what I can understand, it appears that the function is undefined for non-numeric values (perhaps κ2 and cc2?) and NIntegrate is unable to evaluate it. I think the solution is to reverse the order of evaluation (integrate only when the input constants are numeric). So I proceeded to do the following modification:

T[cc2_?NumericQ] := 
Table[{cc2, 
NIntegrate[
Evaluate[(sbbf /. {g2 -> 
      Sqrt[ cc2]/2*Sqrt[κ1*κ2]}) /. { κ2 -> 
    10.}], {ω, -100, 100}]}, {cc2, 0, 100, 0.1}]

Unfortunately the above fix did not work and I suspected that I need more ?NumericQ for my other constants. So I did

T[cc2_?NumericQ, κ1_?NumericQ, κ2_?NumericQ, g2_?NumericQ]:= ...

For good measure but unfortunately that didn't work as well. I am quite lost at this moment and I could use any help that I can get.

Thanks in advance!

$\endgroup$
  • $\begingroup$ What you tried was sensible but there remains a symbolic κ1 in the input. $\endgroup$ – Daniel Lichtblau Mar 11 '18 at 16:27
  • $\begingroup$ What is the value of κ1 supposed to be? $\endgroup$ – J. M. is away Mar 11 '18 at 16:27
  • $\begingroup$ Apologies, [Kappa]1 goes to 1. I placed that right before [Kappa]2 -> 10 but it still didn't work. $\endgroup$ – kowalski Mar 11 '18 at 16:35
  • $\begingroup$ sbbf by itself (without [args]) has not been defined. you should use sbbf[Sqrt[ cc2]/2*Sqrt[κ1*κ2],10.,w] $\endgroup$ – george2079 Mar 11 '18 at 16:47
  • $\begingroup$ @george2079 I think what you meant was to put the first argument as w, followed by 10 for k2 and 'Sqrt[cc2*k1*k2]/2' (your order of argument is different from mine). But it worked without the need for defining ?NumericQ for my table T. $\endgroup$ – kowalski Mar 11 '18 at 17:07
0
$\begingroup$

You can try this, as you already have defined sbbf:

pts={#, NIntegrate[sbbf[\[Omega], 10, Sqrt[#]/2*Sqrt[10]], {\[Omega], -100, 100}]} 
 & /@ Range[0, 100, .1]
ListPlot[pts, Joined -> True,AxesLabel -> {"cc2", "Integral"}]

enter image description here

and by seeing the result, no need to use fine sampling in cc2.

$\endgroup$

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.