> a=100000
> b=0.15e-3
> c=633e-9
> d=30
> e=880
> f(x)=((a)**2)*((b)**2)*((c/(pi*b*sin(atan((x-d)/e))))**2)*((sin((pi*b*sin(atan((x-d)/e)))/c))**2)
That's a somewhat suboptimal way of setting up your function. It would
make a lot more sense to do it more piecemeal:
# Let's refer to things by their usual name (some do without the pis...)
sinc(x)=sin(pi*x)/(pi*x)
# use atan2 instead of atan:
f1(x,d,e)=sin(atan2(x-d,e))
# Note: this doesn't really need to use trig functions.
# alternative:
#f1(x,d,e) = (x-d) / sqrt((x-d)**2 + e**2)
# Using these, and after spotting that f(x) consists of terms that are
# all_ squared, so the square can be moved to the outer edge, one gets:
f(x,a,b,c,d,e) = (a*b * sinc(b/c*f1(x,d,e)))**2
One thing this makes much easier to see is that there's a redundancy in
your parameters:
f(x,a*b,1,c/b,d,e)=f(x,a,b,c,d,e) for all k,x,a,...
Another thing more obvious is how this function's value can become
undefined: for x==d, f1(x,d,e) is zero, so the argument to sinc()
becomes zero, and you hit the function's undefined spot:
gnuplot> print f(d,a,b,c,d,e)
^
undefined value
To avoid that, you can use sinc()'s continuous extension instead:
sinc(x) = (x == 0) ? 1.0 : sin(pi*x)/(pi*x)