Хотя инструкция не рекомендует задавать вопросы. Моя тема в форуме это всё-таки вопрос. Суть дела в следующем. Опущу физику задачи. Решается конечная последовательность квадратных уравнений, коэффициенты которых определяются из рекуррентных соотношений. Для каждого уравнения вычисляется также из рекуррентных соотношений область допустимых значений. Для каждой пары корней выбирается один, соответствующий ОДЗ. Осуществляется это в цикле с помощью двух операторов if. Выглядит это так
A3 = zeros(1,q)
for i = 1:q
if (D1(1,i)>AN(i))and(D1(1,i) < AH(i)) then A3(1,i) = D1(1,i) end
if (D1(2,i)>AN(i))and(D1(2,i)<AH(2,i)) then A3(1,i) = D1(2,i) end end
На консоле появляется сообщение
if (D1(1,i) > AN(i))and(D1(1,i) < AH(i)) then A3(1,i) = D1(1,i)
!--error 144 Операция для заданных операндов не определена. отметьте или определите функцию %s_2_s как перегружаемую. Что я делал:
1. Проверил распечатыванием типы переменных и их размерности;
2. Упростил логическую конструкцию до одного условия;
3. Проверил размерности массивов;
4 Уменьшил размерность массивов до 2 и соответственно в цикле количество итераций уменьшил до 2.
Всякий раз, когда выполнение программы подходило к if, появлялось сообщение, приведённое выше. Установил я 5-ую версию scilab. Возможно это внутренние какие-то проблемы у программной среды? Надеюсь, кто-нибудь сталкивался с такими вещами. С уважением Станислав