MATLAB: Problem with a code

MATLAB

Hi, I need to find out the minimum N so that Eg<10^(-7). I got that N=199…and it's to much… Can anyone help me what is the problem with my code?
Thanks,
<<
>>

Best Answer

Here is a solution using no loops, and only vectorized code:
hy = 1/2000;
mv = 0:5000;
den = sqrt(sum((1-(2/5*mv*hy).^2).^2));
pfx = @(nv) (-1).^nv ./ (2*nv + 1).^3;
trg = @(nv) bsxfun(@times, (2*nv+1)/5, pi*mv*hy);
foo = @(nv) bsxfun(@times, pfx(nv), cos(trg(nv)));
bar = @(nv) sqrt(sum((32/pi^3 * sum(foo(nv)) - (1-(2/5*mv*hy).^2)).^2));
fun = @(N) bar((0:N)') / den;
First lets take a look at the function:
>> X = 1:300; % range of N values
>> Y = arrayfun(fun, X);
>> semilogy(X,Y)
And now the first value <1e-7 occurs for an N of:
>> Z = Y<1e-7;
>> X(find(Z,1,'first'))
ans =
198