Я получаю сообщение об ошибке при использовании fmincon, и я не знаю, правильно ли я его использую? - PullRequest
1 голос
/ 20 января 2020

Я новичок в программировании. Мне нужно, пожалуйста, задать 2 вопроса. Мой код после вопросов. Большое спасибо !!!

1) Я пытаюсь использовать fmincon в R, но продолжаю получать следующую ошибку:

"Ошибка в chol.default (ZHZ): ведущий младший порядка 2 не является положительно определенным "

Кто-нибудь имеет представление о том, что это такое? Мой код ниже.

2) Правильно ли я программирую? Функция должна находить значения, чтобы минимизировать «sqrterrors». Код, который я написал, делает это?

x0 <- c(-0.0084,0.0049,-0.0019,0);

#Function

fn <- function(x){



  #Get the parameters
  a0<-x[1];
  a1<-x[2];
  a2<-x[3];
  a3<-x[4];  


  daysmatrix=as.matrix(maturity)%*%as.matrix(ones(1,dim(datespayout)[2]))-as.matrix(ones(dim(maturity)[1],1))%*%as.matrix(datespayout)


  timetopayout<-(as.matrix(datespayout)--34)/365;


  discountrate<-a0+a1*as.matrix(timetopayout)+a2*as.matrix(timetopayout^2)+a3*as.matrix(timetopayout^3);


  priceZCB<-exp(-as.matrix(discountrate)*as.matrix(timetopayout))


  paymentbydaysmatrix=(daysmatrix==0)*100+0.5*as.matrix(coupon)%*%as.matrix(ones(1,dim(datespayout)[2]))*(daysmatrix>=0);

  paymentbydaysmatrix<-sweep(as.matrix(paymentbydaysmatrix), MARGIN=2, as.matrix(priceZCB), `*`);


  PVestimate=as.matrix(rowSums(paymentbydaysmatrix));

  sqrterrors=(price_obs-PVestimate)^2;
  sqrterrors=sum(sqrterrors);


}

# Upper and Lower Bounds
bmax0 = 0.01;
bmax1 = 0.01;
bmax2 = 0.001;
bmax3 = 0.001;
ub1 <- c(bmax0,bmax1,bmax2,bmax3);
lb1=-ub1;
A <- NULL;
b <- NULL;
Aeq <- NULL;
beq <- NULL;
hin <- NULL;
heq <- NULL;

x <- fmincon(x0, fn, gr = NULL, method = "SQP",A=NULL,b=NULL,Aeq=NULL,beq=NULL,lb=lb1,ub=ub1,hin=NULL,heq=NULL)```






...