我是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)。有什么建议吗?
答案 0 :(得分:0)
S(i)
将S
与i
相乘。 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;