При попытке это площадка:Swift: выполнение было прервано, причина: EXC_BAD_INSTRUCTION ошибка
func StockEvolution(S_0:Double, _ down:Double, _ up:Double, _ totalsteps:Int, _ upsteps:Int) -> Double // function being used in calcCall()
{
var S_t:Double = S_0 * pow(up, Double(upsteps)) * pow(down, Double(totalsteps - upsteps))
return S_t
}
func CallPayoff(S:Double, _ K:Double) -> Double // function being used in calcCall()
{
return max(S - K, 0.0)
}
func calcCall(S_0:Double, _ down:Double, _ up:Double, _ r:Double, _ steps:Int, _ K:Double) -> Double //calculate Call-Option
{
var prices = [Double]()
var q = 0.6 //risk-neutral probability factor
var i = 0
while i < steps
{
var payOff = CallPayoff(StockEvolution(S_0, down, up, steps, i), K)
prices.append(payOff)
i += 1
}
var n = steps - 1
while n >= 0
{
var j = 0
while j <= n
{
var value = (1/r) * (prices[j + 1] * q + (1 - q) * prices[j])
prices.removeAtIndex(j)
prices.insert(value, atIndex: j)
j += 1
}
n -= 1
}
return prices[0]
}
Делая это:
var checkPrice = calcCall(100, 0.6, 1.5, 1.05, 10, 200)
Это дает мне эту ошибку:
казни прерывание, причина: EXC_BAD_INSTRUCTION (код = EXC_I386_INVOP, подкод = 0x0)
I ca похоже, не обнаружил ошибку в моем коде. Я пробовал с разными входными значениями, но ошибка все еще происходит.
Было бы здорово, если бы вы могли взглянуть на мой код и помочь мне исправить эту проблему. Спасибо за ваши старания.
Благодарю вас, сэр, за то, что вы нашли время, чтобы просмотреть мой код. Это имеет смысл – heisenberg
... Объяснение, которое вы мне предоставили, имеет смысл. Да, теперь я вижу, почему возникает ошибка. К сожалению, результат не имеет большого смысла. Я просмотрю свой код. Возможно, я допустил ошибку в формуле или неправильно ее осуществил. Я также ценю ваши советы (потому что я новичок в Swift). С уважением. – heisenberg