表中一个模型的多个计算

时间:2012-03-29 07:26:14

标签: wolfram-mathematica

我是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个数字。 我找不到在TABLE中执行此操作的方法。此外,我将不得不总结这10个结果并计算Mean等。我想使用TABLE因为进一步的计算 - SUM,MEAN - 我认为它是最简单的“形式”结果使用....是它?

我想到的是:

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

但当然它会乘以S x(i)。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

S(i)Si相乘。 S[i]使用参数S调用函数i

The four kinds of bracketing in Mathematica


我刚才意识到S根本不是一个函数,所以你不想用参数i来调用它。您可以通过S简单地获得Table[S,{10}] 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}]

答案 1 :(得分:0)

您可以在您创建的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;