2015-05-26 3 views
0

Я ищу неподвижную точку x, когда f(x)=x функции, конечно, но я не знаю, как ее решить с помощью R, я пытаюсь использовать fsolve со следующим кодом, но возможно его не правильный способ написать это ... Я ничего не получаю ... Большое спасибо заранееR фиксированная точка функции

library(pracma) 
p<- c(x=0.1, y=0.1) 
f1 <- function(p) { 
       expPfLeft<- (160*p[1]) + ((1-p[1])*200) 
       expPfRight<- (10*p[1])+ ((1-p[1])*370) 
       expPfTop <- (200*p[2]) + ((1-p[2])*160) 
       expPfBottom <- (370*p[2]) + ((1-p[2])*10) 

       return(c (exp(2*expPfLeft)/((exp(2*expPfLeft)+exp(2*expPfRight))) , 
          exp(2*expPfTop)/((exp(2*expPfTop))+(exp(2*expPfBottom))))) 


     } 


fsolve(f1,p) 

ответ

1

Предполагая, что ваша функция определена правильно. Вы ищете f(p[1], p[2]) = c(p[1], p[2])

Вы можете создать исправить свой ответ, изменив оператор возврата к:

return(c(exp(2*expPfLeft)/((exp(2*expPfLeft)+exp(2*expPfRight))), exp(2*expPfTop)/((exp(2*expPfTop))+(exp(2*expPfBottom)))) - p)

Мы можем наблюдать, что ваша функция оптимизации фактически две независимые функции. p[1] используется в левом и правом. p[2] используется в верхней и нижней частях.

Мы можем разделить ваши функции.

f.x <- function(p) { 
    expPfLeft<- (160*p) + ((1-p)*200) 
    expPfRight<- (10*p)+ ((1-p)*370) 
    return(exp(2*expPfLeft)/((exp(2*expPfLeft)+exp(2*expPfRight))) - p) 
} 

f.y <- function(p) { 
    expPfTop <- (200*p) + ((1-p)*160) 
    expPfBottom <- (370*p) + ((1-p)*10) 
    return(exp(2*expPfTop)/((exp(2*expPfTop))+(exp(2*expPfBottom))) - p) 
} 

Упрощая ваше выражение, чтобы мы могли обмануть немного для начального значения

enter image description here

Мы можем видеть, что есть только один приближенный приближенное решение при х = 1.

fsolve(f.x, 1) 

$x 
[1] 1 

$fval 
[1] 0 

И аналогично для второй функции существует решение на 0,4689.

fsolve(f.y, 0.1) 

$x 
[1] 0.4689443 

$fval 
[1] 4.266803e-09 

Делая все это побеждает цель оптимизации, и заставляет меня верить, что ваша функция оптимизации неправильно определена.

+0

Большое спасибо, да, это должно быть '-p', конечно. Я глупый!!! но я предполагаю, что я сделал некоторую другую ошибку при определении функции, проблема в том, что в моделировании существует некоторая рекурсивная структура, которую я не полностью получаю, как писать, но как только я получу, я попытаюсь сделать ее более понятной ..... Большое вам спасибо. Это на самом деле подходящая игра в копейки, и я ищу равновесие Quantal Response Equilibria –

Смежные вопросы