Индекс вне границ для цикла (MATLAB) - PullRequest
1 голос
/ 30 ноября 2011

Хорошо, у меня проблема (возможно, проблема новичка), но здесь она идет:

for i=1:1:16;
    h=10^(-i);
    yDFC2(i)=(1/(2*1*h(i)))*(-1*valX+valX);
end
err2=abs(fDX(x1)-yDFC2);
loglog(h,err2,'b-');

Каждый раз, когда я запускаю этот код, он выдает мне следующую ошибку:

Попытка доступа к h (2);индексировать за пределами границ, потому что цифра (h) = 1

valX - это переменная, рассчитанная путем определения изображения функции, введенной пользователем;fDX является производной этой функции (обе работают хорошо).

Это предназначено для построения расстояния (h) в сравнении с ошибкой в ​​центральных конечных разностях (CFD).Формула внутри цикла - это производная 1-го порядка, рассчитанная CFD для n=2.

Интервал должен быть с шагом 10^(-i).

Если кто-нибудь может помочь мне понять этоЯ был бы очень благодарен.

1 Ответ

3 голосов
/ 30 ноября 2011

Если вы делаете

h = 10.^(-(1:1:16)); 

вне цикла for, вы можете правильно увеличить h (i) внутри. Проблема в том, что вы создаете скаляр h для каждого прохода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...