Несколько расчетов одной модели в таблице - PullRequest
0 голосов
/ 29 марта 2012

Я новый пользователь Mathematica и не могу понять, как решить эту проблему. У меня есть вычисление S, которое дает мне 10 случайных вариаций 10 результатов:

Xi = RandomVariate[NormalDistribution[], 10]
Mu = -0.00644131
Sigma= 0.0562005
t = 0.1
s = 100

fnmc[s_,Mu_,Sigma_, t_,Xi_] := s  Exp[(Mu - Sigma^2/2) t + Sigma Sqrt[t ] Xi]
S = fnmc[s, Mu, Sigma, t, Xi]    

Теперь мне нужно вычислить формулу S 10 раз, поэтому в результате я получу 100 чисел. Я не могу найти способ сделать это в ТАБЛИЦЕ. Кроме того, мне нужно будет суммировать эти 10 результатов и вычислить среднее и т. Д. Я хотел использовать TABLE из-за дальнейших вычислений - SUM, MEAN - я думал, что это самая простая «форма» результатов для работы с ....

Я имел в виду что-то вроде:

Table[S(i),{i,10}]  

но, конечно, он умножает S x (i). Есть предложения?

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Вы можете использовать карту функционального подхода к программированию (/ @) своей функции над созданным вами Xis.

Mu = -0.00644131;
Sigma= 0.0562005;
t = 0.1;
s = 100;

(* if you wanted ten scalar random numbers, with each one used on one application of your equation  *) 
Xi = RandomVariate[NormalDistribution[], 10];
ans = s  Exp[(Mu - Sigma^2/2) t + Sigma Sqrt[t ] #] & /@ Xi;

(* if you wanted ten 10 dimensional  random numbers, with each 10D number used on one application of your equation  *) 

Xi = RandomVariate[NormalDistribution[], {10,10}];
ans = s  Exp[(Mu - Sigma^2/2) t + Sigma Sqrt[t ] #] & /@ Xi;
0 голосов
/ 29 марта 2012

S(i) умножает S на i. S[i] вызывает функцию S с параметром i.

Четыре вида брекетинга в Mathematica


Я только что понял, что S вообще не является функцией, поэтому вы не хотите вызывать его с параметром i. Вы можете получить результат S 10 раз просто Table[S,{10}], но, поскольку Xi рассчитывается только один раз, это даст вам 10 раз один и тот же вектор. Может быть, вы хотите сделать весь расчет 10 раз? Это было бы:

Table[
 (
  Xi = RandomVariate[NormalDistribution[], 10]; 
  Mu = -0.00644131; 
  Sigma = 0.0562005;
  t = 0.1; s = 100; 
  s*Exp[(Mu - Sigma^2/2)*t + Sigma*Sqrt[t]*Xi]
 ), {10}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...