Я новичок в программировании. Мне нужно, пожалуйста, задать 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)```