2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 19:38 
Руководитель поставил повести 1000 испытаний для определения оценок параметра labmda эскпоненциального закона при заданных входных параметрах T и N. У меня не получается сделать цикл, чтобы matlab посчитал 1000 значений и выдал оценку дисперсии, математического ожидания и среднеквадратического отклонения.
Таких серий мне надо провести 200, изменяя входные параметры. Помогите пожалуйста, я совсем запутался. Внизу программа даёт результат но только один, а не 1000.

Изображение

Помогите пожалуйста неинженеру

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 20:10 
Аватара пользователя
Мощь Матлаба - в его умении ловко месить массивы (но не только). Поэтому, чаще всего, в нем циклы не нужны. В Вашем примере точно.

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 21:09 
а как мне автоматически повторить выделенную формулу 100 раз?

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 22:04 
Аватара пользователя
Мне лень разбираться, что делает Ваш код. (Похоже на rejection algorithm - как это по-русски-то?)
Можете пояснить? Тогда и помочь будет легче.

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 08:35 
Основная задача - спрогнозировать число продаж (книги) по ранним наблюдениям. Для этого используем метод монте-карло.
lambda - интенсивность продаж
Т - период нашего наблюдения
n - кол-во книг которое надо завести в магазин
Все три величины задаются с входного потока.
Далее нам необходимо задать величину случайную величину nu и посчитать величину ksi. Далее отбирает те ksi которые меньше Т и подставляем в формулу оценки lambda.
У меня получается только 1 раз получить оценку, потом заново копировать программу. Видимо можно составить цикл, чтобы повторить 1000 раз этот код и получить в итоге нужные дисперсии и мат. ожидание. Вот как это сделать я не знаю

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 10:04 
Ваш "цикл" как раз и делает только одну итерацию
Код:
for lambda=.15
...
end

Чтобы сделать нормальный цикл по lambda (например по lambda=0, 0.1, 0.2, 0.3, ..., 0.9, 1)
нужно написать что-то в таком духе:
Код:
for lambda=0:0.1:1
...
end

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 10:50 
Аватара пользователя
Вчитался все в Ваш код.
Последние строчки так и не понял.
Вот написано
Код:
С = sum(rand(1,25)<T)

Это просто присвоение
Код:
C=25

То есть оценка для $\lambda$ такая:
$$
\hat \lambda = \frac B {25 + (25-B)T}? 
$$



Выше тоже нелепо:
Код:
B=sum(sum(A,1))

Можно написать просто
Код:
B=sum(A)

или
Код:
B=sum(A,2)

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 15:00 
спасибо коллеги за помощь. уже понимаете что я ни Б ни М ни кукареку, а диплом делать нужно. вот по книжке перебираю все варианты
настоящая формула выглядит так
Изображение

k- книги которые были проданы в период меньше Т
N - кол-во завезённых книг в магазин
Т - время эксперимента
ksi - случайная величина по нормальному закону

И извините что пока не выучил нужный тег написания

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 18:14 
Аватара пользователя
Kellme писал(а):
ksi - случайная величина по нормальному закону

То есть по экспоненциальному?
Навскидку так:
Используется синтаксис Matlab M
T=3;
n=25;
lambda = .15;
nu=rand(1000,n);
ksi = (-1/lambda) * log(nu);
A=ksi<T;
B=sum(A,2);
C=sum(ksi,2);
lambda_ocenka=B./(C+(n*ones(1000,1)-B))
 

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 20:13 
Цитата:
ksi - случайная величина по нормальному закону
Цитата:
То есть по экспоненциальному?

ага

похоже программа работает. я дописал, считает мат ожидание, дисперсию и среднек. откл.

очень Вас благодарю за помощь Хорхе. Если что будет не так не обессудьте, придётся опять спрашивать. но диплом сдвинулся из тупика. спасибо

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение23.09.2011, 00:02 
Здравствуйте. Не могу понять, как правильно построить цикл. Требуется вычислить вероятность ошибки в тексте, где:
N - количество слов в тексте;
p_osh – вероятность ошибки в одном символе отдельного слова текста;
n – количество символов в отдельных словах текста;
i – кратность ошибки в отдельном слове текста, которая изменяется от 1 до n;
C – количество сочетаний из n по i;
t – количество слов с ошибками, которое изменяется от 1 до N;
C_A – количество сочетаний из N по t.
Все считает вродебы правильно. Остается проблема в том, что массив не накапливает результат. Попытка задать размерность матрицы (типа (5,10) приводит к тому, что %результат вычислений записывается в последнюю ячейку массива состоящего из "0". Следующий результат записывается в последнюю ячейку следующего массива, состоящего из "0". И так далее. Получается сколько результатов, столько и нулевых массивов.


for p_osh=0.0001:0.0111:0.1;
for n=3:7;
P_osh_a_t=0;
for i=1:n;
C=factorial(n)/(factorial(i)*(factorial(n-i)));
P_osh_a_t=P_osh_a_t+((C)*(p_osh^i)*((1-p_osh)^(n-i)));
for N=1:85;
P_osh_T=0;
for t=1:N
C_A=factorial(N)./((factorial(t)).*(factorial(N-t)));
P_osh_T=sum((C_A).*(P_osh_a_t.^t).*((1-P_osh_a_t).^(N-t)));
end
end
end
end
end

 
 
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение27.09.2011, 09:37 
Аватара пользователя
Lubomudr, запишите, пожалуйста, не неправильную программу, а правильные формулы, по которым Вам надо произвести расчеты - думаю, что так будет проще разобратся, что Вам нужно, да и от половины циклов можно будет избавиться

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group