Математическая задачка

dima4321

Новичок
всем привет ХХХХЛОПЦЫ ))

Планируется, что в базу будут попадать цифры.

Простой пример


3
6

2
8
11

3
5
9
15
8
1




Можно ли создать условие, чтобы засечь максимальное движение цифр в одну сторону на убывание или наооброт на восхождение.

т.е. идея тренда


Например мне нужно четкое движение в одну строну более чем на 9 едениц.

Я выделил жирным.

Как создать условие ??


Буду рад любым советам и идеям.)
 

Вурдалак

Продвинутый новичок
Цифр?

Вообще, аналог производной для дискретной функции, нет? Получаешь значения 3, -4, 6, 3, -8, 2, 4, 6, -7, -7. Суммируешь до тех пор, пока один и тот же знак.
 

AmdY

Пью пиво
Команда форума
dima4321
а в чём проблема? цифры засовываешь в массив и обходишь в цикле сравнивая текущее и предыдущее значение.
 

zerkms

TDD infected
Команда форума
AmdY
Клёво было бы получить это из базы сразу :) Потому я, собственно, и подписался на топик - вдруг тут будет решение с одним лишь запросом.
 

dima4321

Новичок
zerkms


Юзать это буду только я )) поэтому скорость не приниципиальна ))

Нужно для определения тренда некоторых акций. Значения будут складываться один раз в день.

Потом наверно будет запрос. Складывание в массив. и перебор с помощью условия и вывод.
 

A1x

Новичок
dima4321 построить прямую по этим точкам методом наименьших квадратов
наклон прямой и будет тренд
 

ArkDoom

Новичок
Тоже изначально кстати думал решить все графиком и не париться, измерять максимальное или минимальное Y по длие X :D
 

dima4321

Новичок
A1x
ArkDoom

Данный график можно построить c помощью php. ?? . Если да , то куда копать ..может ссылку.

Пока решил проблему так:



PHP:
<?php
   // тренд вверх
   $array = array(3, 6,9,10,12, 2, 8, 11, 3, 5, 9, 15, 8, 1);
 
 
   $cmax['last']=0;
   
   for($i = 0; $i < count($array); $i++){
     if($array[$i] > $cmax['last'])
	 {
     $cmax['last']  = $array[$i];
	 $new[]=$array[$i]."-";
	 if(count($new)>3)
	 {
	 echo "<pre>";
	 print_r($new);
	 echo "</pre>";
	 }
	 }
	 else
	 {
	 unset($new);
	 $cmax['last']  = $array[$i];
	 $new[]=$array[$i]."-";
	 
	 }
     }
  
  
  
 ?>
 
Сверху