Найти функцию затухания - страница 3

 
anonymous:

"Prony analysis" :D


Да. Уже все придумано до нас.

 
Vladimir:

Не могли бы Вы сказать, как у Вас подсчитывается стоимость каждой валюты в долларах. Или дать ссылку.


Там сложно рассчитывается все, врятли я смогу описать ,ссылку я точно не дам, по тому что это нельзя прочитать нигде

 

Всем спасибо за помощь, апроксимацию решил несколько иным способом, наложением друг на друга нескольких рядов с шагом в N отсчетов. Функция оказалась очень простая, просто корень степени n и все

 

Лучше поздно чем никогда :), вот моё решение, на R. Входные данные взял из атача Vizard_; на графике y1 и y2 это то что получил он; y3 - то что получил я.

Подбор коэфициентов для y = B * e^(-at) + c


x1234 <- read.csv("date.csv")

DampFun <- function(p, x){
  return(p[1] * exp(1)^(-p[2]*x) + p[3])
}

R2 <- function(act, pred){
  fnVal <- 1 - sum((act-pred)^2)/sum((act-mean(act)^2))
  if(fnVal == Inf){
    return(.Machine$double.xmax/10)
  }else if(fnVal == -Inf){
    return(-.Machine$double.xmax/10)
  }else{
    return(fnVal)
  }
}

FitnessFN <- function(p){
  return(- R2(act = x1234$x, pred = DampFun(p = p, x = x1234$time)))
}

optimResult <- optim(par = c(1,1,1), fn = FitnessFN, method = "L-BFGS-B")

formulaText <- paste0("y3 = ",optimResult$par[1], " * E^(-",optimResult$par[2],"*x) + ",optimResult$par[3])
plot(x1234$x, type="l", col="blue", lwd = 2, main=formulaText)
lines(x1234$y1, col="red", lwd = 2)
lines(x1234$y2, col="green", lwd = 2)
lines(DampFun(p = optimResult$par, x = x1234$time), col="purple", lwd = 3)
legend(x="topright", legend = c("x", "y1", "y2", "y3"), fill=c("blue","red","green","purple"))
 
Функцию я нашел, апроксимация оказалась проста, подбор функции тоже не сложен, оказалось, что функция это всего-то корень n степени. 
В развитии темы возникла необходимость сгенерировать "случайный" график с заданными вероятностными характеристиками. Я легко могу создать график, где вероятность события вверх или вниз будет 50%. Можно легко сделать больше или меньше 50%, но тогда график получится трендовым. А как наоборот, сделать график флетовым, то есть чтобы вероятность разворота была 60% например? Может кто знает как это в экселе реализовать?
 

Решил проблему, вчера затупил, бывает достаточно перестать думать и задача решается легко ,тем более что решение элементарно, даже думаю как не дошел до этого.

Получилось так: =ЕСЛИ(B2>0;ЕСЛИ(A3>25;-1;1);ЕСЛИ(A3>75;-1;1))

ну а график такой

График изменения стоимости валют, носит флетовый характер и это нужно для симуляции рынка.

Причина обращения: