Я использовал nleqslv
пакет, чтобы решить систему двух нелинейных уравненийnleqslv понять логику итерационной процедуры
library(nleqslv)
read.table("C:\\Users\\Livia\\Desktop\\firm.txt",header=TRUE)
firm.txt<-"Q K r X.E t E0
"
firm<-read.table(textConnection(firm.txt),header=TRUE,stringsAsFactors=FALSE)
firm
#Loop with solver for 9 dates:
for(i in 1:9){
K<-firm[i,2]
r<-firm[i,3]
X.E<-firm[i,4]
t<-firm[i,5]
E0<-firm[i,6]
BS<-function(x){
f<-rep(NA,length(x))
f[1]<-(x[1]*pnorm((log(x[1]/K)+(r+(x[2]^2/2))*t)/(x[2]*sqrt(t)))-exp(-r*t)*K*pnorm((log(x[1]/K)+(r+(x[2]^2/2))*t)/(x[2]*sqrt(t))-x[2]*sqrt(t)))-E0
f[2]<-X.E*E0-pnorm((log(x[1]/K)+(r+(x[2]^2/2))*t)/(x[2]*sqrt(t)))*x[2]*x[1]
f
}
p0<-c((E0+K),X.E*E0/(E0+K))
print(p0)
ans<-nleqslv(p0,BS,control=list(trace=1,allowSingular=TRUE))
print(ans)
}
Мне бы очень хотелось, чтобы понять логику позади него. У меня есть два неизвестных, и я установить их начальные значения в соответствии с
p0<-c((E0+K),X.E*E0/(E0+K))
Как итерация процедура работает? Я уже пытался получить его из пакетов CRAN «nleqslv» 3.0 .pdf, но безуспешно.
Привет Livia, добро пожаловать в StackOverflow. 2 вещи - 1. Вы можете видеть, как эта функция работает, глядя на исходный код, 2. Если вам нужна дополнительная помощь, это на самом деле вопрос для нашего сайта-брака, Cross Validated. stats.stackexchange.com Исходный код доступен для CRAN, Github и запускается функция в R без '()' –
Используемые алгоритмы не документируются в .pdf. Вы можете найти больше в книге Денниса и Шнабеля. Кстати, вы представили эти уравнения в [r-nleqslv-loop-bad-results] (http://stackoverflow.com/questions/36666061/r-nleqslv-loop-bad-results). Почему вы не использовали временные переменные в моем ответе и почему не масштабировали 'f [1]' с 'K'? – Bhas
Привет, Bhas, я не получал никаких уведомлений, поэтому я никогда не видел вашего ответа! Тем не менее, мой вопрос более теоретический, я просто хочу понять механизм: систему двух уравнений с двумя unkowns; задайте начальные значения этих неизвестных, чтобы начать процедуру итерации ... и затем, где эти значения подставляются, чтобы получить все больше и больше результатов, пока они не сближаются? –