What does the error Attempted to access k(3e-10); index must be a positive integer or logical. mean?

1 次查看(过去 30 天)
Here is my code :-
M = 20; %number of iterations
a= 2*(10^(-10));
b= 1*(10^(-10));
U0=9;
kstart = -pi/(a+b); %Starting point
kstop = pi/(a+b); %Stop point
delta_k = (kstop - kstart)/M; %Discretization step
for n=0:1:M %begin cycle
k = kstart + n*delta_k;
k1(n+1) = k;
fun = @(x) (((1-2*x)./(2*sqrt(x.*(1-x)))).*sin(pi*sqrt(x))).*sinh(pi*sqrt(1-x)) + cos(pi*sqrt(x)).*cosh(pi*sqrt(1-x)) - cos(k(a+b));
x0 = 0.3; % Initial estimate to the solution
Sol = fzero(fun,x0); %Solve a generic equation Sin(2x) = Cos(k) numerically
Sol1(n+1) = Sol;
Sola = fzero(fun,1.0); %Solve a generic equation Sin(2x) = Cos(k) numerically
Sol2(n+1) = Sola;
Solb = fzero(fun,2.0); %Solve a generic equation Sin(2x) = Cos(k) numerically
Sol3(n+1) = Solb;
E = Sol*U0;
E1(n+1) = E;
Ea = Sola*U0;
E2(n+1) = Ea;
Eb = Sol*U0;
E3(n+1) = Eb;
formatSpec = 'Counter i = %1.0f; Wavenumber k = %1.2f; Solution_1 = %1.5f\n; Solution_2 = %1.5f\n; Solution_3 = %1.5f\n; Energy_1= %1.5f\n; Energy_2= %1.5f\n; Energy_3= %1.5f\n ';
fprintf(formatSpec,n,k,Sol,Sola,Solb,E1,E2,E3) %Print the solution
end
figure
plot(k1,E1,'g') %Plot the graph using the vectors of numerical values as above
hold on
plot(k1,E2,'b')
hold on
plot(k1,E3,'r')
axis([-1.1*(10^10) 1.1*(10^10) 0 5])
xlabel('wavenumber')
ylabel('Energy eV')
Error using fzero (line 289)
FZERO cannot continue because user supplied function_handle ==>
@(x)(((1-2*x)./(2*sqrt(x.*(1-x)))).*sin(pi*sqrt(x))).*sinh(pi*sqrt(1-x))+cos(pi*sqrt(x)).*cosh(pi*sqrt(1-x))-cos(k(a+b))
failed with the error below.
Attempted to access k(3e-10); index must be a positive integer or logical.
  3 个评论

请先登录,再进行评论。

回答(1 个)

Christoph F.
Christoph F. 2017-10-19
k(a+b)
means to MatLab "the (a+b)th element of vector k". However, a+b isn't integer.
Maybe the expression
cos(k(a+b))
is missing an operator somewhere?

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by