2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 19:38 


02/04/09
5
Руководитель поставил повести 1000 испытаний для определения оценок параметра labmda эскпоненциального закона при заданных входных параметрах T и N. У меня не получается сделать цикл, чтобы matlab посчитал 1000 значений и выдал оценку дисперсии, математического ожидания и среднеквадратического отклонения.
Таких серий мне надо провести 200, изменяя входные параметры. Помогите пожалуйста, я совсем запутался. Внизу программа даёт результат но только один, а не 1000.

Изображение

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

 Профиль  
                  
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 20:10 
Заслуженный участник
Аватара пользователя


14/02/07
2648
Мощь Матлаба - в его умении ловко месить массивы (но не только). Поэтому, чаще всего, в нем циклы не нужны. В Вашем примере точно.

 Профиль  
                  
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 21:09 


02/04/09
5
а как мне автоматически повторить выделенную формулу 100 раз?

 Профиль  
                  
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение12.05.2009, 22:04 
Заслуженный участник
Аватара пользователя


14/02/07
2648
Мне лень разбираться, что делает Ваш код. (Похоже на rejection algorithm - как это по-русски-то?)
Можете пояснить? Тогда и помочь будет легче.

 Профиль  
                  
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 08:35 


02/04/09
5
Основная задача - спрогнозировать число продаж (книги) по ранним наблюдениям. Для этого используем метод монте-карло.
lambda - интенсивность продаж
Т - период нашего наблюдения
n - кол-во книг которое надо завести в магазин
Все три величины задаются с входного потока.
Далее нам необходимо задать величину случайную величину nu и посчитать величину ksi. Далее отбирает те ksi которые меньше Т и подставляем в формулу оценки lambda.
У меня получается только 1 раз получить оценку, потом заново копировать программу. Видимо можно составить цикл, чтобы повторить 1000 раз этот код и получить в итоге нужные дисперсии и мат. ожидание. Вот как это сделать я не знаю

 Профиль  
                  
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 10:04 


22/12/07
229
Ваш "цикл" как раз и делает только одну итерацию
Код:
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 
Заслуженный участник
Аватара пользователя


14/02/07
2648
Вчитался все в Ваш код.
Последние строчки так и не понял.
Вот написано
Код:
С = 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 


02/04/09
5
спасибо коллеги за помощь. уже понимаете что я ни Б ни М ни кукареку, а диплом делать нужно. вот по книжке перебираю все варианты
настоящая формула выглядит так
Изображение

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

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

 Профиль  
                  
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение13.05.2009, 18:14 
Заслуженный участник
Аватара пользователя


14/02/07
2648
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 


02/04/09
5
Цитата:
ksi - случайная величина по нормальному закону
Цитата:
То есть по экспоненциальному?

ага

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

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

 Профиль  
                  
 
 Re: Помогите разобраться с циклом в MatLab
Сообщение23.09.2011, 00:02 


27/08/11
1
Здравствуйте. Не могу понять, как правильно построить цикл. Требуется вычислить вероятность ошибки в тексте, где:
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 
Экс-модератор
Аватара пользователя


23/12/05
12064
Lubomudr, запишите, пожалуйста, не неправильную программу, а правильные формулы, по которым Вам надо произвести расчеты - думаю, что так будет проще разобратся, что Вам нужно, да и от половины циклов можно будет избавиться

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group