Mathematica Plot3D не создает график при отображении пользовательской функции?
Я пишу простую реализацию Mathematica для модели Блэка-Шоулза и использую Plot3D для построения графика ценообразования. Однако, когда я запускаю этот код, сюжет не создается. мой call
а также put
функции для получения правильных значений при запуске отдельно, но график не создается. Код:
Clear[d1, d2, call, put, stockPrice, strikePrice, riskFreeRate, timeToExp, volatility]
d1[stockPrice_, strikePrice_, riskFreeRate_, timeToExp_, volatility_] := (Log[stockPrice / strikePrice] + (riskFreeRate + 0.5*volatility^2)*timeToExp) / (volatility * Sqrt[timeToExp])
d2[stockPrice_, strikePrice_, riskFreeRate_, timeToExp_, volatility_] := d1[stockPrice, strikePrice, riskFreeRate, timeToExp, volatility] - volatility*Sqrt[timeToExp]
call[stockPrice_, strikePrice_, riskFreeRate_, timeToExp_,
volatility_] := stockPrice * CDF[NormalDistribution[0, 1], d1[stockPrice, strikePrice, riskFreeRate, timeToExp, volatility]] - strikePrice * Exp[-riskFreeRate*timeToExp] *CDF[NormalDistribution[0, 1], d2[stockPrice, strikePrice, riskFreeRate, timeToExp, volatility]]
Plot3D[call[stockPrice, 500, 0.0030, timeToExp, 0.39], {stockPrice,
10, 1000}, {timeToExp, 0.0833333, 5}]
Другие графики, как этот пример из ссылки, работают.
Plot3D[{x^2 + y^2, -x^2 - y^2}, {x, -2, 2}, {y, -2, 2},
RegionFunction -> Function[{x, y, z}, x^2 + y^2 <= 4],
BoxRatios -> Automatic]
1 ответ
Решение
У вас просто есть timeToExp
call[]
а также timetoExp
(строчная t) в спецификации диапазона графика.