2012-03-29 3 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 результатов и рассчитать среднее значение и т. Д. Я хотел использовать TABLE из-за дальнейшего вычисления - SUM, MEAN - я думал, что это самая простая «форма» результатов для работы с .... это ?

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

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

но с курса умножает S х (I). Какие-либо предложения?

+0

Вы получите ответы на ваш вопрос в будущем, может быть, даже быстрее http://mathematica.stackexchange.com/ – Verbeia

ответ

0

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

The four kinds of bracketing in 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}] 
+0

Спасибо так много! О функции - я думал, что когда я определил «fnmc», она стала функцией - поэтому, когда я назвал «S» функцией «fnmc» с определенными значениями, я подумал, что «S» это еще функция ... Итак если бы я использовал «fnmc» (или какую-то функцию) вместо «S», выглядела бы таблица иначе? Еще раз спасибо за ваш ответ, это мне очень помогло! – seniorita

+0

Если вы используете 'fmnc' в' Table', он будет вызван 10 раз, но до тех пор, пока вы назначаете 'Xi' только один раз в начале, он всегда будет содержать одинаковые значения, поэтому вызов' fnmc' N раз будет по-прежнему давать в 10 раз один и тот же вектор. – Niki

+0

Я понимаю, спасибо! :) – seniorita

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; 
Смежные вопросы