2012-03-29 34 views
0

我是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个结果,并计算平均值等。我想使用表,因为进一步的计算 - SUM,MEAN - 我认为这是最简单的“形式”的结果来处理....是它?

我脑子里想的是这样的:

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

不过关,当然它乘以小号X(I)。有什么建议么?

+0

你会得到答案,你的未来的问题甚至更快的http://mathematica.stackexchange.com/ – Verbeia 2012-03-31 21:14:11

回答

0

S(i)乘以SiS[i]用参数i调用函数S

The four kinds of bracketing in Mathematica


我刚刚意识到S不是一个函数在所有的,所以你不希望与参数i叫它做。你可以简单地通过Table[S,{10}]得到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}] 
+0

太谢谢你了!关于函数 - 我认为当我定义“fnmc”时它变成了一个函数 - 所以当我用“S”命名具有特定值的函数“fnmc”时,我认为“S”它仍然是一个函数...所以如果我使用“fnmc”(或某个函数)而不是“S”,那么Table的外观会有所不同吗?再次感谢您的回复,这对我有很大帮助! – seniorita 2012-03-29 07:57:36

+0

如果你在'Table'中使用'fmnc',它会被调用10次,但是只要你在开始时只分配一次'Xi',它总是包含相同的值,所以调用'fnmc' N次仍然会给10次相同的载体。 – Niki 2012-03-29 07:59:32

+0

我明白了,thanx! :) – seniorita 2012-03-29 08:10:06

0

你可以使用函数式编程方法图(/ @)在你所创建的X是你的函数。

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;