Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 4

Большие факториалы при вычислении комбинаторной вероятности

16.02.2017, 22:43. Показов 900. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую!

Возникла надобность вычислить комбинаторную вероятность по таким формулам:
[del] для различных значений n.
Порядок величин пояснен на картинке.
При использовании nchoosek выдается ошибка (хотелось сделать быстро и без циклов)).
Как тут лучше действовать?
Миниатюры
Большие факториалы при вычислении комбинаторной вероятности  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2017, 22:43
Ответы с готовыми решениями:

Ошибка при вычислении вероятности
При вычислении функции pexp параметр выделен красным This array index is invalid for this array.

Большие факториалы
Помогите написать программу,котороя щитает большые фактуриалы(100!,200! и тд)

Программа выдает ноль при любых условиях при вычислении выражения
помогите решить программу на си, у меня выдает неправильный результат(( помогите разобраться в чем проблема, выдает ноль при любых условиях...

6
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
17.02.2017, 07:37
Цитата Сообщение от alexabog Посмотреть сообщение
При использовании nchoosek выдается ошибка
Какая ошибка, может просто предупреждение.
Для конкретных пояснений приведите свой фрагмент кода.
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 4
17.02.2017, 08:42  [ТС]
Matlab M
1
2
3
4
s =0
for i =1:40
s = s+nchoosek(40,i)*nchoosek(60,45-i)/nchoosek(100,45)
end
Warning: Result may not be exact. Coefficient is greater than 9.007199e+15 and is only accurate to 15 digits
> In nchoosek at 92

s =9.7388e-14

Warning: Result may not be exact. Coefficient is greater than 9.007199e+15 and is only accurate to 15 digits
> In nchoosek at 92 ... и т.д.

Эти предупреждения обеспокоили) Хотелось бы компактный вариант, но чтобы без них..
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
17.02.2017, 09:29
nchoosek(100,45)=6.1448*10^28
В предупреждении пишется, что результат превышает 9*10^15 и поэтому не может быть точным. Тоесть будет проводится усечение результата до 14-15 знаков в мантисе.
Цитата Сообщение от alexabog Посмотреть сообщение
Хотелось бы компактный вариант, но чтобы без них..
Для величин 6.1448*10^28 необходимая точность без округлений даже long double (80-и битный) не хватит, в нем 19разрядов мантисы.
Следовательно Вам надо или согласится с текущим состоянием или:
1. Самостоятельно разработать свой тип данных повышенной точности и прописать операции с ним.
2. Дождаться когда будут выпущены 128 разрядные процессоры и написаны к ним операционная система и прикладное ПО (в частности MATLAB использующий возможности 128 разрядных процессоров).
3. Проводить вычисления с символьными переменными
Вот код:
Matlab M
1
2
3
4
5
6
s =0;
z=sym(nchoosek(100,45));
for i =1:40
s = s+sym(nchoosek(40,i))*sym(nchoosek(60,45-i));
end 
s=s/z
Вот точный результат
s =15362117803534033745197453289/15362117803534045390189887488
Предупреждения правда все равно остались, но возможно кто-то подскажет как можно на время отключить вывод предупреждений.
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 4
17.02.2017, 09:40  [ТС]
Спасибо, интересно. Смирюсь пока что.
Хотя можно попробовать еще посокращать множители у факториалов, превратив выражения слагаемых в какие-то комбинации с prod(...), числа хоть поменьше будут..
0
Эксперт по математике/физике
 Аватар для SSC
3390 / 1913 / 571
Регистрация: 09.04.2015
Сообщений: 5,365
17.02.2017, 11:07
Цитата Сообщение от alexabog Посмотреть сообщение
числа хоть поменьше будут..
Врядли (хотя точно не уверен), вроде бы при выводе дробей сокращения производятся.
Точный результат можно представить в несколько ином виде
s=1-11644992434199/15362117803534045390189887488
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 4
18.02.2017, 07:44  [ТС]
В итоге, перевел всё в prod, отдельные дроби в скобки взял, чтобы не накапливался числитель и знаменатель, а делилось сразу же (в моем представлении), и вычислилось без предупреждений. В самом коде, правда, ошибка где-то, результат не тот вышел, но числа тоже большие фигурировали.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.02.2017, 07:44
Помогаю со студенческими работами здесь

Не могу понять в чем ошибка при вычислении в Базе данных при составлении Запроса
Всем привет! Нужна ваша помощь! Недавно начал осваивать Access и не знаю всех тонкостей. На работе поставили задачу по созданию...

Элементы комбинаторной геометрии
* На окружности последовательно отмечены точки A1, ... , A12. Сколько существует 1) треугольников с вершинами в отмеченных точках, не...

Вычислить значение комбинаторной суммы
Всем привет. Попалась в ДЗ задача, вычислить значение суммы \sum\limits_{k = 0}^n{C_{2n - k}^k*{{( - 1)}^k}} На пальцах посчитал первые...

Ошибка при вычислении
void __fastcall TForm1::BitBtn1Click(TObject *Sender) { double x,y,z; x = StrToFloat(MaskEdit1->Text); y =...

Ошибки при вычислении
Что я опять не так делаю? :wall: В методичке тоже самое написано и все вычислено а у меня не хочет. Файл - в студию!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru