Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Определение экcтремума на графике Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Torino



Зарегистрирован: 27.01.2009
Сообщения: 72

СообщениеДобавлено: Вс Фев 15, 2009 12:13 pm Ответить с цитатой Вернуться к началу

Пытаюсь определить макcимум на графике.

Извлек из массива три последовательных значения:

Код:
Max1=Ref(graph,0);
//_TRACE("Y1 = " + Max1);
Max2=Ref(graph,-1);
//_TRACE("Y2 = " + Max2);
Max3=Ref(graph,-2);
//_TRACE("Y3 = " + Max3);


для такого графика:
Код:
              Y2
              /\
             /  \
            /    \
           /      \
          /       Y1
         /
        /
       Y3


Макcимум определяется если:
Y2-Y3>0 и Y1-Y2<0

Для проверки этих условий пишу строчку:
Код:
gen_m=IIf(((Max2-Max3)>0 AND (Max1-Max2)<0),True,False);


Вот тут начинается проблема: значение gen_m у меня постоянно 0.

Проверял по отдельности условия (Max2-Max3)>0 и (Max1-Max2)<0

По отдельности все правильно получается: и значение 1 получаю и 0, где надо.

В чем может быть проблема?

Честно говоря не совсем понятно, как можно сравнивать массивы?
(я имею ввиду Max1, Max2 и Max3)
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вс Фев 15, 2009 8:50 pm Ответить с цитатой Вернуться к началу

Torino писал(а):
Пытаюсь определить макcимум на графике.

Извлек из массива три последовательных значения:

Код:
Max1=Ref(graph,0);
//_TRACE("Y1 = " + Max1);
Max2=Ref(graph,-1);
//_TRACE("Y2 = " + Max2);
Max3=Ref(graph,-2);
//_TRACE("Y3 = " + Max3);


для такого графика:
Код:
              Y2
              /\
             /  \
            /    \
           /      \
          /       Y1
         /
        /
       Y3


Макcимум определяется если:
Y2-Y3>0 и Y1-Y2<0

Для проверки этих условий пишу строчку:
Код:
gen_m=IIf(((Ref(graph,-1)-Ref(graph,-2))>0 AND (graph-Ref(graph,-1))<0),True,False);


Вот тут начинается проблема: значение gen_m у меня постоянно 0.

Проверял по отдельности условия (Max2-Max3)>0 и (Max1-Max2)<0

По отдельности все правильно получается: и значение 1 получаю и 0, где надо.

В чем может быть проблема?

Честно говоря не совсем понятно, как можно сравнивать массивы?
(я имею ввиду Max1, Max2 и Max3)



Код:
gen_m=IIf(graph>ref(graph,-1) AND graph>ref(graph,1),1,0);


Не понятно как ты получаеш массив graph, но если там косяков нет то будет работать.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Torino



Зарегистрирован: 27.01.2009
Сообщения: 72

СообщениеДобавлено: Вс Фев 15, 2009 9:04 pm Ответить с цитатой Вернуться к началу

Юра спасибо!
Разбираюсь.
Посмотреть профиль Отправить личное сообщение
Torino



Зарегистрирован: 27.01.2009
Сообщения: 72

СообщениеДобавлено: Пн Фев 16, 2009 9:29 am Ответить с цитатой Вернуться к началу

Проблема была в несогласовании типов аргументов.

IIf возвращает массив.

Я этот массив скармливал оператору If.

If не ругался, но с результатом косячил.
Посмотреть профиль Отправить личное сообщение
kosbar



Зарегистрирован: 17.03.2009
Сообщения: 356

СообщениеДобавлено: Сб Июл 04, 2009 5:21 pm Ответить с цитатой Вернуться к началу

а HHV() не подходит?
Посмотреть профиль Отправить личное сообщение ICQ Number
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen