LINUX.ORG.RU

Определение функции, как перегружаемой в Scilab


0

0

Хотя инструкция не рекомендует задавать вопросы. Моя тема в форуме это всё-таки вопрос. Суть дела в следующем. Опущу физику задачи. Решается конечная последовательность квадратных уравнений, коэффициенты которых определяются из рекуррентных соотношений. Для каждого уравнения вычисляется также из рекуррентных соотношений область допустимых значений. Для каждой пары корней выбирается один, соответствующий ОДЗ. Осуществляется это в цикле с помощью двух операторов 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. Возможно это внутренние какие-то проблемы у программной среды? Надеюсь, кто-нибудь сталкивался с такими вещами. С уважением Станислав



Последнее исправление: StanislavR (всего исправлений: 1)

В порядке бреда - может быть ты сравниваешь вертикальные векторы с горизонтальными?

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.