# Plot3D unable to understand input function [closed]

I'm attempting to plot the Wigner Function of the Morse Oscillator defined as

f[λ_, m_, n_, y_, k_] =
(2/Pi)N1[λ, n] N1[λ, m]ξ^(2λ - m - n - 1)*
Sum[Sum[b[λ, m, r]b[λ, n, s]ξ^(r + s)*
BesselK[m - n - r + s + 2*I*k, ξ], {s, 0, n}], {r, 0, m}]


where

N1[λ_, n_] =  Sqrt[(2*λ - 2 n - 1)*Gamma[n + 1]/Gamma[2*λ - n]]

b[λ_, n_, j_] = (-1)^j*(1/j!)*Gamma[2*λ - n]/(Gamma[2*λ -
2 n + j]*Gamma[n - j + 1])

ξ = 2*λ*Exp[-y]


I found that if I use the function f in Mathematica's Plot3D, I get an error:

However, if I first evaluate f[1,0,0,y,k], and then plug the result into Plot3D, I get:

Why does Mathematica have trouble plotting f[1,0,0,y,k] if I plug it directly into Plot3D, but has no trouble if I first evaluate f[1,0,0,y,k]? Is there a way for Mathematica to understand Plot3D[f[1,0,0,y,k],{y,-3,3},{k,-3,3}]? I want Mathematica to plot the function automatically without me having to first evaluate the function and then copy and paste the output into Plot3D. For example, one thing I'd like to do is Manipulate[Plot3D[f[5,n,n,y,k],{y,-3,3},{k,-3,3}],{n,0,4,1}].

Thanks.

$\bf{\large{Edit}}$

Interestingly, for

f[1, 0, 0, 1., 1.]


I get:

0.468399 DifferenceRoot[   Function[{\[FormalY]$, \[FormalN]$}, {4 (-1 - \[FormalN]$+ 0) (-\[FormalN]$ + 0) 1^2 \[FormalY]$[\[FormalN]$] -
2 (-1 - \[FormalN]$+ 0) (\[FormalN]$ E^(2 1.) +
2 \[FormalN]$^2 E^(2 1.) + \[FormalN]$^3 E^(2 1.) +
2 I \[FormalN]$E^(2 1.) 1. + 2 I \[FormalN]$^2 E^(2 1.) 1. + \[FormalN]$E^(2 1.) 0 + \[FormalN]$^2 E^(2 1.) 0 - 2 E^(2 1.) 0 -
5 \[FormalN]$E^(2 1.) 0 - 3 \[FormalN]$^2 E^(2 1.) 0 -
4 I E^(2 1.) 1. 0 - 4 I \[FormalN]$E^(2 1.) 1. 0 - 2 E^(2 1.) 0 0 - 2 \[FormalN]$ E^(2 1.) 0 0 +
2 E^(2 1.) 0^2 +
2 \[FormalN]$E^(2 1.) 0^2 - \[FormalN]$ E^(2 1.)
r - \[FormalN]$^2 E^(2 1.) r + 2 E^(2 1.) 0 r + 2 \[FormalN]$ E^(2 1.) 0 r + 2 E^(2 1.) +
4 \[FormalN]$E^(2 1.) + 2 \[FormalN]$^2 E^(2 1.) +
4 I E^(2 1.) 1. + 4 I \[FormalN]$E^(2 1.) 1. + 2 E^(2 1.) 0 + 2 \[FormalN]$ E^(2 1.) 0 - 2 E^(2 1.) 0 -
2 \[FormalN]$E^(2 1.) 0 - 2 E^(2 1.) r - 2 \[FormalN]$ E^(2 1.) r - 2 \[FormalN]$1^2 + 2 0 1^2) \[FormalY]$[
1 + \[FormalN]$] + (1 + \[FormalN]$) E^(
2 1.) (-\[FormalN]$+ 2 0 - 2 1) (4 + 7 \[FormalN]$ +
3 \[FormalN]$^2 + 4 I 1. + 4 I \[FormalN]$ 1. + 2 0 +
2 \[FormalN]$0 - 8 0 - 6 \[FormalN]$ 0 - 4 I 1. 0 -
2 0 0 + 2 0^2 - 2 r - 2 \[FormalN]$r + 2 0 r + 4 1 + 2 \[FormalN]$) \[FormalY]$[ 2 + \[FormalN]$] + (1 + \[FormalN]$) (2 + \[FormalN]$) E^(
2 1.) (-1 - \[FormalN]$+ 2 0 - 2 1) (-\[FormalN]$ + 2 0 -
2 1) \[FormalY]$[3 + \[FormalN]$] == 0, \[FormalY]$[0] == 0, \[FormalY]$[1] == BesselK[2 I 1. + 0 - 0 - r, 2 E^-1.]/(
Gamma[1 + 0] Gamma[-2 0 + 2 1]), \[FormalY]\$[2] ==
BesselK[2 I 1. + 0 - 0 - r, 2 E^-1.]/(
Gamma[1 + 0] Gamma[-2 0 + 2 1]) + (
2 E^-1. 0 BesselK[1 + 2 I 1. + 0 - 0 - r,
2 E^-1.])/((2 0 - 2 1) Gamma[1 + 0] Gamma[-2 0 + 2 1])}]][1]


However, for

f[1, 0, 0, 1, 1]


I get:

(4*BesselK[2*I, 2/E])/(E*Pi)

• Please post copyable code. Jul 18, 2014 at 14:51
• If pre-evaluation works, an easy workaround should be Plot3D[Evaluate@f[1,0,0,y,k], {y,-3,3}, {k,-3,3}]. While that doesn't answer your question, it might solve your problem. Jul 18, 2014 at 15:12
• In the signature of f there should be a _ following the m. This may not be your problem of course. Jul 18, 2014 at 15:14
• BTW, what do you get for f[1,0,0,1.,1.]? Jul 18, 2014 at 15:19
• I'm voting to close this question as off-topic because it is too localized; i.e, it applies only to the local situation and needs of its poster and answers will not benefit others. May 23, 2016 at 14:12

## SetDelayed

Just inserted some SetDelayed assignments. Thought the 3rd one (xsi) gave reason for messages. It works fine now.

Clear@"*"

N1[λ_, n_] :=
Sqrt[(2*λ - 2 n - 1)*Gamma[n + 1]/Gamma[2*λ - n]]

b[λ_, n_, j_] := (-1)^j*(1/j!)*
Gamma[2*λ - n]/(Gamma[2*λ - 2 n + j]*
Gamma[n - j + 1])
ξ[λ_, y_] := 2*λ*Exp[-y]

f[λ_, m_, n_, y_, k_] := (2/Pi)*N1[λ, n] *
N1[λ, m]*ξ[λ, y]^(2 λ - m - n - 1)*
Sum[Sum[b[λ, m, r]*
b[λ, n, s]*ξ[λ, y]^(r + s)*
BesselK[m - n - r + s + 2*I*k, 2*λ*Exp[-y]], {s, 0,
n}], {r, 0, m}]

Plot3D[f[1, 0, 0, y, k], {y, -3, +3}, {k, -3, +3}]
`