MATLAB: The following error occurred converting from sym to double: Unable to convert expression into double array.

symsymbolic

This part is included in a function called myf2(w,k):
function f= myf2(w,k)
i = sqrt(-1);
fm = @(x) (1/sqrt(2*pi))* exp(-x.^2/2);
dfm = @(x) -x.*fm(x);
fun = @(x) dfm(x) / (x-w/k);
w0 = max(imag(w/k),0);
a = -10+w0*i;
b = 10+w0*i;
N = 100;
R = dfm(w/k);
x = linspace(a,b,N+1);
syms wn x
wn = sym(zeros(1, N)); % <------- Something is wrong here
f_int = int(fun, x, a, b);
A = vpa(f_int);
f = k^2 - A - 2*pi*i*R;
return
This is where I call the function:
for ix = 1:Nx
for iy = 1:Ny
z = x(ix) + I*y(iy);
tmp = myf2(z,k);
f(ix,iy) = abs(tmp);
end
end
After this I'm getting an error! Please help me out!

Best Answer

Do you have to perform symbolically? Does not look like the integral exists. Why not numerically?
function f= myf2(w,k)
dfm =@(x) -x.*(1/sqrt(2*pi)).* exp(-x.^2/2);
fun =@(x) -x.*(1/sqrt(2*pi)).* exp(-x.^2/2)./ (x-w/k);
w0 = max(imag(w./k),0);
a = -10+w0*1i;
b = 10+w0*1i;
R = dfm(w./k);
A = integral(fun,a,b);
f = k^2 - A - 2*pi*1i*R;
end