R 归纳过程的递归

R 归纳过程的递归,r,recursion,R,Recursion,我是自学习的R,我正在与任意随机过程的代码查找停止时间(kns,ks)作斗争,其定义如下: 基:k0=inf{u>=0:max\u0,u]-min\u0,u]=H} 如果X(k0)=max_0[0,k0]X,那么k0s=inf{u在[0,k0]:X(u)=min_0[0,k0]X} 如果X(k0)=最小值[0,k0]X,那么k0s=inf{u在[0,k0]:X(u)=最大值[0,k0]}X} 步骤n到n+1: 如果$X(kn)-X(ksn)=H,则: k(n+1)=inf{t>=kn:max_

我是自学习的R,我正在与任意随机过程的代码查找停止时间(kns,ks)作斗争,其定义如下:

:k0=inf{u>=0:max\u0,u]-min\u0,u]=H}

如果X(k0)=max_0[0,k0]X,那么k0s=inf{u在[0,k0]:X(u)=min_0[0,k0]X}

如果X(k0)=最小值[0,k0]X,那么k0s=inf{u在[0,k0]:X(u)=最大值[0,k0]}X}

步骤n到n+1

  • 如果$X(kn)-X(ksn)=H,则:

    k(n+1)=inf{t>=kn:max_[kn,t]}X-X(t)=H}

    ks(n+1)=inf{t in[kn,k(n+1)]:X(t)=max_ukn[kn,k(n+1)]X}

  • 如果X(kn)-X(ksn)=-H,则:

    k(n+1)=inf{t>=n:X(t)-min{[kn,t]X=H}

    k(n+1)=inf{t in[kn,k(n+1)]:X(t)=min_ukn[kn,k(n+1)]X}

我下面的代码能够找到基(k0s,ks)和下两对(ks1,k1),(ks2,k2)


SO上不支持
stepLaTeX语法。请修复您的问题格式。但是,一般来说,R不擅长递归。最好使用循环。不过乍一看,您可以使用
cummin
cummax
而不是
来处理
循环。谢谢@Roland的建议
    step<-function(v){
     z=numeric(300)
     for(i in 1:300){z[i]=max(v[1:i])-min(v[1:i])}
     k0<-min(which(z>=0.0005))
     k0s<-if (v[k0]==max(v[1:k0])) min(which(v==min(v[1:k0]))) else if (v[k0]==min(v[1:k0])) min(which(v==max(v[1:k0])))
     x=numeric(300)
     if (v[k0]-v[k0s]>=0.0005) {
     for (i in k0:300){x[i]=max(v[k0:i])-v[i]}
     k1<-min(which(x>=0.0005))
     k1s<-min(which(v==max(v[k0:k1])))
     }
     if (v[k0]-v[k0s]<=-0.0005) {
     for (i in k0:300) {x[i]=-min(v[k0:i])+v[i]}
     k1<-min(which(x>=0.0005))
     k1s<-min(which(v==min(v[k0:k1])))
     }
     y=numeric(300)
     if (v[k1]-v[k1s]>=0.0005) {
     for (i in k1:300){y[i]=max(v[k1:i])-v[i]}
     k2<-min(which(y>=0.0005))
     k2s<-min(which(v==max(v[k1:k2])))
     }
     if (v[k1]-v[k1s]<=-0.0005) {
     for (i in k1:300) {y[i]=-min(v[k1:i])+v[i]}
     k2<-min(which(y>=0.0005))
     k2s<-min(which(v==min(v[k1:k2])))
      }
     return(c(k0s,k0,k1s,k1,k2s,k2))
     }
     v<-rnorm(300)