'How do I fix Index exceeds the number of elemnts in array?

syms x

%w'' = p(x)w' + q(x)w + r(x), [a,b]
dados = inputdlg({'P: ','Q: ','R: ','n: '},'Dados');
limites = inputdlg({'a: ','f(a): ','b: ','f(b): '},'PVC');
passo = (str2num(limites{3})-str2num(limites{1}))/str2num(dados{4});
xVector = str2num(limites{1}) : passo : str2num(limites{3});

% Sistema matricial : Aw = d. Obtendo a matriz tridiagonal A:
a(1) = 2+(passo^2)*(subs(x,dados{2},xVector(2))); % diagonal principal
b(1) = -1 +(passo/2)*(subs(x,dados{1},xVector(2))); % diagonal superior
d(1) = -(passo^2)*subs(x,dados{3},xVector(2)) + ((1+(passo/2)*subs(x,dados{1},xVector(2)))*str2num(limites{2}));
for i = 2:length(xVector)-3
    a(i) = 2+(passo^2)*subs(x,dados{2},xVector(i+1));
    b(i) = -1+(passo/2)*subs(x,dados{1},xVector(i+1));
    c(i) = -1-(passo/2)*subs(x,dados{1},xVector(i+1)); % inferior
    % d(i) = -(passo ^2)* subs(x,dados{3}, xVector(i+1));
end

(...)

basically this is the code, but I keep getting this error:

Index exceeds the number of array elements. Index must not exceed 0. Error in (line 10) a(1) = 2+(passo^2)*(subs(x,dados{2},xVector(2))); % diagonal principal



Solution 1:[1]

A isn't defined in the code you posted. Perhaps instead of a(1)=... you could do a = [...]

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 kpie