2013-03-06 3 views
0

저는 물류 분배 함수의 고정 점을 찾고 다른 매개 변수 값에 대해 고정 점이 어떻게 변하는지를 결정하려고합니다. 상기 코드는 상기 매개 변수의 선택에 매우 잘 작동함수의 고정 점 찾기

nfxp.reps <- 0 
err <- 10 
p <- seq(0, 1, by = 0.0001) 
pold <- p 
gamma <- 6 
k <- 3 
while (err > 1E-12) { 
    nfxp.reps <- nfxp.reps + 1 
    if (nfxp.reps > 999) { 
    stop("The number of NFXP reps needs to be increased. \n") 
    } 
    pnew <- plogis(-k + gamma * pold) 
    err <- max(abs(pnew - pold)) 
    pold <- pnew 
} 

: 같이 코드 보인다 감마 k는 3 - 고정 점, 안정적인 2 불안정 1 검색 (여기서,이 p = 0.5). (만약

gamma<-7 
k<-3 

루프 p = 0.3225은 중앙 정점 위치를 확인할 수있다 : I가 아닌 비례 중간 정점 중 하나 이상 또는 0.5 이하이고, 상기 파라미터를 변경하지만 경우 말할 감마 = 7, k = 3)

답변

1

고정 점 반복하여 설정에서 불안정한 평형을 찾을 수 없습니다. 다시 말하면, 불안정한 평형 상태에서 바로 시작하지 않으면 nfxp 알고리즘이 항상 그것으로부터 멀어지게됩니다.

대체 방법은 루트 해결 방법을 사용하는 것입니다. 물론 모든 고정 소수점이 발견된다는 보장은 없습니다.

library(rootSolve) # for the uniroot.all function 
pfind<-function(k=3,gamma=7) 
{ 
pdiff <-function(p0) p0-plogis(-k + gamma * p0) 
uniroot.all(p.diff,c(0,1)) 
} 
> fps= pfind() 
> fps 
[1] 0.08036917 0.32257992 0.97925817 

우리는이를 확인할 수 있습니다 :이 도움이

pseq =seq(0,1,length=100) 
plot(x=pseq ,y= plogis(-k + gamma *pseq),type= 'l') 
abline(0,1,col='grey') 
points(matrix(rep(fps,each=2), ncol=2, byrow=TRUE),pch=19,col='red') 

희망 다음은 간단한 예입니다.

+0

대단히 감사합니다! – user1682980

1

코드를 새 기능으로 재정렬합니다.

p.fixed <- function(p0,tol = 1E-9,max.iter = 100,k=3,gamma=7,verbose=F){ 
    pold <- p0 
    pnew <- plogis(-k + gamma * pold) 
    iter <- 1 
    while ((abs(pnew - pold) > tol) && (iter < max.iter)){ 
     pold <- pnew 
     pnew <- plogis(-k + gamma * pold) 
     iter <- iter + 1 
     if(verbose) 
     cat("At iteration", iter, "value of p is:", pnew, "\n") 
    } 
    if (abs(pnew - pold) > tol) { 
     cat("Algorithm failed to converge") 
     return(NULL) 
    } 
    else { 
     cat("Algorithm converged, in :" ,iter,"iterations \n") 
     return(pnew) 
    } 
} 

몇 가지 테스트 : 그것은 격퇴하기 때문에 건설하여

p.fixed(0.2,k=3,gamma=7) 
Algorithm converged, in : 30 iterations 
[1] 0.08035782 
> p.fixed(0.2,k=5,gamma=5) 
Algorithm converged, in : 7 iterations 
[1] 0.006927088 
> p.fixed(0.2,k=5,gamma=5,verbose=T) 
At iteration 2 value of p is: 0.007318032 
At iteration 3 value of p is: 0.006940548 
At iteration 4 value of p is: 0.006927551 
At iteration 5 value of p is: 0.006927104 
At iteration 6 value of p is: 0.006927089 
At iteration 7 value of p is: 0.006927088 
Algorithm converged, in : 7 iterations 
[1] 0.006927088 
+0

고맙습니다. 그러나 위의 코드를 보면 알 수 있듯이 매개 변수 사양에 따라 불안정한 평형을 찾을 수 없습니다. k = 3 및 γ = 7에서 고정 점은 (0.08035, 0.3225, 097926)이어야합니다. 중간 점을 항상 잃어버린 것처럼 보입니다. – user1682980

+0

@ user1682980 결과를 어떻게 알 수 있습니까? 이것을 어떻게 확인할 수 있습니까? – agstudy

+0

그냥 그래픽 테스트를 통해, 최종 코드는 구조에 많은 공변량을 추가해야합니다. 그래서 이것은 고정 루프가 여러 개있을 때 모든 고정 소수점을 찾을 수 있도록 시작하는 간단한 루프입니다. 특정 매개 변수 값. – user1682980