MATLAB: Anonymous Function

functions

[EDIT: 20110623 22:10 CDT – reformat – WDR]
I am having considerable difficulty with the program below. My goal is to be able to enter or change the Current Density (J) in the integral as an anonymous function. When j = 2*cos(theta)/r^3, the result should be about 31.4. Are there any other methods that would allow me to enter J inot the integral?
When I run I get the following error message:
??? Undefined function or method 'mtimes' for input arguments of type 'function_handle'.
When I swap the "%" on the operator inside the loops I get a 31.4, a good result.
clc
clear
close
r = 0.2;
dt = .1;
dp = .1;
jinput = input('Enter an expression for the Current Density (J)... > ','s')
jfactor = eval(['@(r,theta,phi)' jinput]);
% set initial total sum to zero
sum1 = 0;
% outer integral loop
for theta = 0:dt:pi/2
% inner integral loop
for phi = 0:dp:2*pi
% add the partial sums to the total sum
sum1 = sum1 + jfactor*r^2*sin(theta)*dt*dp;
%sum1 = sum1 + 2*cos(theta)/r^3*r^2*sin(theta)*dt*dp;
end
end
% display the output
fprintf('>The total current through the defined spherical shell is %g A.\n', sum1)

Best Answer

jfactor becomes a function, and that function needs to be passed arguments.
sum1 = sum1 + jfactor(r,theta,phi)*r^2*sin(theta)*dt*dp;