|
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
|
||||||
Расчет Величины Гамма по закону распределения СВ Фишера24.04.2009, 23:35. Показов 4100. Ответов 12
Метки нет (Все метки)
Добрый день.
Я ниже создавал тему про нахождение дробной части числа. Это мне нужно было для закона распределения СВ Фишера. Я уже где-то неделю немогу решить во такую проблему: Выполненные условия: -Есть СВ распределенная по закону Фишера (распределение сделано правильно и соответствует почти теории) -Есть такая рассчитываемая величина, называемая частотой попадание в заданные интервалы (Расчитывается правильно и их сумма равна 1); кол.интервалов задаются (изначально > 10). -Проблема: 1. Рассчитана частота попаданий (практическая). Чтобы ее проверить нужно сделать почти такуюжу, но теоретическую. -Эта величина (ЧастТеоретическая), рассчитывается по формуле: Параметры К1 и К2 задаются пользователем. С формулой проблем нет при условии что К1 и К2 кратны двум. Проблема в следующем: Вот те буковки Г и есть Гамма которую я не могу правильно рассчитать при условии что К1 и К2 не кратны двум. В коде я решил рассчитать Гаммы(3 штуки нужно) так:
Формула для расчета фактариала, если не крато двум следующая (вот с ней то у меня проблемы походу): -Допустим К1=3, К2=5, то а двойной фактариал (2a-1)!! равен - 1*3*5*7......(2a-1) Вот такая проблема. Если, кто-то с этим уже сталкивался, помогите пжста. Спасибо.
0
|
||||||
| 24.04.2009, 23:35 | |
|
Ответы с готовыми решениями:
12
Реализовать алгоритм генерации случайной величины распределенной по нормальному закону Гаусса Как подключить Accord.Statistics.Distributions для получения случайной величины распределенной по нормальному закону? Генератор случайных величин, подчиняющийся закону распределения Гаусса |
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
||||||||||||||||
| 25.04.2009, 02:25 | ||||||||||||||||
|
С такой задачей не сталкивался, но...
K1 и K2 - int? Если да, то arG_a[0] = (K1 + K2) / 2 - всегда целое число. Надо:
Добавлено через 1 час 21 минуту 24 секунды Ещё подозрительно выглядит вычисление двойного факториала.
1
|
||||||||||||||||
|
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
|
||||||||
| 25.04.2009, 23:54 [ТС] | ||||||||
|
А это
Кстати, спасибо, что подсказали, как альтернативно выставлять шаг. Очень полезно.
0
|
||||||||
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
||||||||
| 26.04.2009, 02:27 | ||||||||
|
Добавлено через 12 минут 26 секунд
1
|
||||||||
|
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
|
||||||||||||
| 26.04.2009, 17:23 [ТС] | ||||||||||||
|
Я думаю остановлюсь вот на этом варианте записи
Я хотел бы еще спросить кое о чем. Вот у меня есть рассчитываемые величины:
-Величины MatOT_F, DispT_F, SkoT_F стоят как (double). Добавлено через 2 часа 18 минут 17 секунд ---забыл сказать. Для рассчета всего этого и еще 3-х функций которые вызываются в главной форме выделил отдельный класс с переменными, функциями и расчетами. Конвертирую я К1 и К2 в главной форме где они и вводятся. В классе оня являются конвентируемыми величинами (float). Вот, если это конечно добавлио ясности...
0
|
||||||||||||
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
||||||||||||||||||
| 26.04.2009, 18:51 | ||||||||||||||||||
А здесь:
1
|
||||||||||||||||||
|
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
|
|
| 27.04.2009, 00:33 [ТС] | |
|
KoppeKTop
Да, я конвертирую К1 и К2 из (string) в (int). Спасибо, за разъяснения. Теперь все сделаю, как надо, ток с этим фактариалом всеравно запарка. Считается верно все, но результат совсем не тот который нужен ( Добавлено через 1 час 8 минут 14 секунд Вот теперь я думаю, создавать новую тему на вопрос такой: Вот эта СВ Фишера рассчитывается довольно быстро, если параметры К1 и К2 меньше 10 и нужно рассчитать < 100 СВ. А вот, если значения допустим повысить до : 3, 5, 1000 (К1,K2, СВ); то мой ПК рассчитывает их довольно долго (1 прогон - ~25сек-....), а с большим К1 и К2 и того вдвойне дольше . Это СВ ведь непрерывная, т.е мне ее нужно постоянно считать будет (думаю потом таймер пихну). В данный момент мне нужо помощь с быстродействием, а то это не дело ждать по 30сек, если повезет.
0
|
|
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
|||
| 27.04.2009, 15:06 | |||
|
0
|
|||
|
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
|
||
| 27.04.2009, 22:20 [ТС] | ||
|
Оптимизация конечно хорошо, но как мне найти узкое место? Можете дать пару советов?
0
|
||
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
||
| 27.04.2009, 23:39 | ||
|
1. Воспользоваться профилировщиком - программа выдаст подробный результат и можно будет увидеть где она проводит больше всего времени. 2. Воспользоваться здравым смыслом. Тут нужно проверить: - алгоритм. Оптимизированный алгоритм, взятый из проверенного учебника может сильно прибавить производительности. Чаще всего в учебниках алгоритмы привдятся на более других языках типа Fortran, Basic, псевдокода и т.д., но если понимаешь, что такое for, if и =, то проблем не будет; - циклы. Все что выполняется 1000 раз должно привлекать наибольшее внимание. Если что-то можно вынести за пределы цикла (инициализация, создание переменных, предварительные вычисления и т.д.) - это должно быть вынесено; - операции с медленными интерфейсами. Чтение/запись в различные интерфейсы могут занимать значительное время. Например, вывод в файл или на видео. Если такие операции выполняются в цикле - это 100% тормоз. Количество таких операций должно быть минимально и обязательно вынесено из циклов; - операции с памятью. Это уже более низкоуровневая штука. Выделение памяти + инициализация - очень медленная операция. Если какая-нить процедура вызывается по 100500 раз и в ней каждый раз выделяется массив из большого числа элементов - на это уходит много времени. В таких случаях лучше передавать в функцию один раз созданный массив в качестве аргумента. Тогда он не будет выделяться 100500 раз. Вот, если вкратце, то основные направления такие.
1
|
||
|
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
|
|
| 28.04.2009, 01:08 [ТС] | |
|
Понятно. Проглядел еще раз все вычисления, вроде ничего особо лишнего. Запустил Анализатор, он выдал 204 предупреждения. Почти ни одно я не понимаю. Единственное, что я понял, это то, что половина этого всего относится к созданию графиков (приминил методы из книги), остальное он говорит, что что-то с переменными.
Вот, пример часто встречающийся: ---Warning 131 CA1709 : Microsoft.Naming : Correct the casing of member name '_sumXi'. ---Warning 132 CA1707 : Microsoft.Naming : Remove all underscores from member '_sumXi'. ---Warning 173 CA1817 : Microsoft.Performance : Within Form1.Result():Void, consider getting the value of 'DataGridViewRowCollection.get_Item(Int3 2) ataGridViewRow' once and caching it inside a local variable before entering the loop.Кто-нить может сказать, что это все значит? Спасибо.
0
|
|
|
11 / 11 / 1
Регистрация: 20.04.2009
Сообщений: 26
|
||||||||||||||||||||||||||||
| 28.04.2009, 12:49 | ||||||||||||||||||||||||||||
Названия переменных типов должны начинаться со строчной буквы и также записаны в "верблюжьем" стиле.
Типичный пример плохого с точки зрения произваодительности кода (пишу на С, ибо лень придумывать пример на C#, но суть должна быть ясна):
0
|
||||||||||||||||||||||||||||
|
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
|
||||||
| 28.04.2009, 17:33 [ТС] | ||||||
|
Что-то совсем не айс. Ну вот пример из кода на тему DataGridView:
fF - fFisher, класс со всеми переменными для вывода. к fFisher'у обращаемся один раз на каждый раз составления таблицы. А вот с подчеркиваниями мне гораздо удобнее читать свой же код чтобы искать ошибку.
0
|
||||||
| 28.04.2009, 17:33 | |
|
Помогаю со студенческими работами здесь
13
Численный метод решения задачи генерации случайных чисел по нормальному закону распределения на одномерное и двумерное пространство Законы распределения случайной величины Гамма-распределение (или ошибка в написании формулы) Найти сумму, закончив расчет, как только абсолютная величина слагаемого станет меньше величины переменной E Критические значения Фишера и Стьюдента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|