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
12072
Lubomudr, запишите, пожалуйста, не неправильную программу, а правильные формулы, по которым Вам надо произвести расчеты - думаю, что так будет проще разобратся, что Вам нужно, да и от половины циклов можно будет избавиться

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

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



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

Сейчас этот форум просматривают: Google [Bot]


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

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