Мне нужно определить функцию sinc https://en.wikipedia.org/wiki/Sinc_function в амплитуре. Для этого я должен определить if-else. Я сделал это, как на странице 462 книги https://ampl.com/BOOK/CHAPTERS/24-refman.pdf. Однако, как только я запускаю свою программу, появляется сообщение об ошибке.
Функция sinc должна быть оценена для всех значений x. Как было сказано ранее, я использовал оператор if-else с условием, оцененным для всех значений i, что я и использую для подсчета количества уже выполненных шагов.
Моя ошибка появляется на i следующим образом:
i не определен контекст: var argA >>> = x1 [i] <<<; </p>
Iне понимаю почему, так как я использовал ту же запись в предыдущих строках, и она работает.
Здесь я определяю размер шага:
param n;
let n :=30;
set N := {0..n by 1};
Здесь яопределить шаг и переменную x1, которая равна x.
var step >=0;
var x1 {N};
var SincA {N};
Это фрагмент кода, в котором я использую x1 [i] и некоторые другие переменные без каких-либо проблем
var f1 {i in N} = w_x*x2[i]^3+u1[i];
var f2 {i in N} = u2[i];
var midx1 {i in N1} = 0.5*(x1[i]+x1[i+1]) + step/8*(f1[i]-f1[i+1]);
И, наконец, здесь я показываю, где проблема
if abs(x1[i]) <=1e-8 then SincA[i]=1 else SincA[i]=sin(x1[i])/x1[i];
Там, где появляется вышеупомянутое сообщение об ошибке.
Я хотел бы знать, почему сообщение об ошибке появляется в последней строке представленного кода, но не в остальных. Насколько я понимаю, я не использую переменные по-другому.