Факториал числа
|
|
basme | Дата: Воскресенье, 21 Октября 2007, 17:17 | Сообщение # 1 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| При некоторых сложных вычислениях просто необходимо вычислить факториал числа средствами простейших арифметических действий. Для этого можно применить такой сценарий: f=1 n=0 For i=1 To value n=n+1 f=f*n Next i где value - число, факториал которого нужно вычислить. В переменную f будет помещено значение факториала.
|
|
| |
Rush | Дата: Вторник, 23 Октября 2007, 17:06 | Сообщение # 2 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| К сожалению, это не совсем полный расчет факториала, потому что неправильно считает факториал 0. Он равен 1 (также как и факториал 1). И поэтому правильней будет так: f=1 If (value>1) Then For i=2 To value f=f*i Next i End Кроме того, и этот вариант, и предыдущий, считают только факториал целых чисел...
|
|
| |
as-master | Дата: Вторник, 23 Октября 2007, 20:38 | Сообщение # 3 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Rush) также как и факториал 1 Факториал единицы равен все-таки единице, а не нулю. Quote (Rush) считают только факториал целых чисел... А вот тут я полный пас - я даже не представляю, как вычисляется факториал не целого числа...
Да пребудет с вами ММВ!
|
|
| |
basme | Дата: Вторник, 23 Октября 2007, 22:19 | Сообщение # 4 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (as-master) я даже не представляю, как вычисляется факториал не целого числа... И совершенно правильно не представляете, потому что факториалов нецелых чисел вообще не бывает. По определению факториала. Потому что: Quote ФАКТОРИАЛ произведение натуральных чисел от единицы до какого-либо данного натурального числа n, т. е. 1·2·3·... ·n; обозначается n!. Например, 5! = 1·2·3·4·5 = 120. Натуральное число - целое, единица и более. Факториала нуля тоже не бывает. А вот калькулятор Виновский запросто высчитывает факториал 0,5 но даже по размеру числа можно понять, что это - не иначе как глюк.
|
|
| |
as-master | Дата: Вторник, 23 Октября 2007, 22:33 | Сообщение # 5 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (basme) калькулятор Виновский запросто высчитывает факториал 0,5 но даже по размеру числа можно понять, что это - не иначе как глюк Нет, дружок, никакой это не глюк. Вас в школе до девятого или даже десятого класса учат, что и корней из отрицательных чисел не бывает. Однако это не так :)
Добавлено (Сегодня, 22:33) --------------------------------------------- Из энциклопедических источников: Факториал дробного числа - факториал вычисляемый от аргумента - .... Вычисляется по формуле: log(x!) = log([x]!) + {x}*log([x]+1). где [x] — целая часть чиcла x, {x} — дробная часть числа x. Например, для x = 11,2 будем иметь log(11,2!) = log(11!) + 0.2*log(12). Вычисляемое таким способом значение факториала дробного числа является приближенным. Для точных расчетов необходимо использовать гамма-функцию. Факториалы нецелых (дробных) чисел появляются при статистическом описании нейросетевых преобразователей биометрия/код ключа доступа биномиальным законом распределения зависмимых биометрических данных.
Да пребудет с вами ММВ!
|
|
| |
YURIY | Дата: Вторник, 23 Октября 2007, 22:52 | Сообщение # 6 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (as-master) Вас в школе до девятого или даже десятого класса учат,что и корней из отрицательных чисел не бывает. Верно подмечено! Quote (basme) Натуральное число - целое, единица и более. Факториала нуля тоже не бывает. А также бывает факториал нуля и он равняется единице. Да, натуральные числа, это числа вида 1,2,3,...,N. Но факториал 0!=1 - хоть убейся...
Вечная память Андрею Сергееву!
|
|
| |
as-master | Дата: Вторник, 23 Октября 2007, 23:40 | Сообщение # 7 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| ...а также, как это ни странно, любое число в степени ноль равно единице Математика, мать её величество :)
Да пребудет с вами ММВ!
|
|
| |
Rush | Дата: Среда, 24 Октября 2007, 14:22 | Сообщение # 8 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (as-master) Факториал единицы равен все-таки единице, а не нулю. Я об этом и написал. Факториал 0 равен единице как и факториал 1. По-моему, это ясно и из моего скрипта. Странно ты читаешь посты...
|
|
| |
as-master | Дата: Среда, 24 Октября 2007, 14:46 | Сообщение # 9 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Ну извини, я почему-то действительно прочитал не так
Да пребудет с вами ММВ!
|
|
| |
basme | Дата: Среда, 24 Октября 2007, 15:32 | Сообщение # 10 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (as-master) Факториалы нецелых (дробных) чисел появляются при статистическом описании нейросетевых преобразователей биометрия/код ключа доступа биномиальным законом распределения зависмимых биометрических данных. Ни хрена себе! Quote (as-master) ...а также, как это ни странно, любое число в степени ноль равно единице Доказывается, кстати, достаточно просто. Quote (Yuriy) Но факториал 0!=1 - хоть убейся... Убиваться не буду, признаю ошибку - 0!=1 Quote (as-master) Вас в школе до девятого или даже десятого класса учат,что и корней из отрицательных чисел не бывает. У нас в восьмом классе ввели понятие мнимых чисел, то есть, в том числе, и квадратных корней из отрицательных чисел. К слову, сомнительно, что средствами Бэхи кому-нибудь придёт в голову вычислять то, при чём появляются факториалы нецелых чисел (я боюсь это вслух произносить ), а вот целые-то могут понадобиться.
|
|
| |
as-master | Дата: Среда, 24 Октября 2007, 17:06 | Сообщение # 11 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Помнится мне, что называются такие числа не мнимыми, а комплексными. Но вот были ли они в моей школьной программе - не скажу, не помню. Производные и интегралы были точно, и основы мат.статистики. А вот насчет сомнительности - так, пожалуй, сомнительно как раз то, что вычисление факториала ВООБЩЕ может кому-то понадобиться в проектах ММВ. Вот вычисление квадратного корня - точно может понадобиться. И даже тригонометрические функции бывают нужны. За примером далеко ходить не нужно: при создании круглого регулятора громкости (автор которого наш друг PolN) тангенсы как раз были нужны, и ему пришлось обходиться дискретными предопределенными значениями. А так - использовал бы тангенс, что намного упростило бы скрипт регулятора.
Да пребудет с вами ММВ!
|
|
| |
basme | Дата: Среда, 24 Октября 2007, 19:09 | Сообщение # 12 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (as-master) А вот насчет сомнительности - так, пожалуй, сомнительно как раз то, что вычислениефакториала ВООБЩЕ может кому-то понадобиться в проектах ММВ. Кстати, именно для вычисления тригонометрических функций они и могут понадобиться! Приблизительное значение синуса и косинуса угла можно вычислить по рядам Фурье, но там не обойтись без двух вещей - факториала и цикла.
|
|
| |
basme | Дата: Четверг, 25 Октября 2007, 13:54 | Сообщение # 13 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (as-master) Скрипт - в студию! :) Ха! Знаете, как бы я был рад, если бы написал такой скрипт... Так что, в студию его предоставить не могу. Он мною написан, но, к сожалению, считает неправильно - выдаёт большие числа со многими нулями... Сама формула вот: sin(x)=x/1!-(x^3)/3!+(x^5)/5!-(x^7)/7!+... R стремится к бесконечности. Таким образом, идёт чередование знаков, плюс числа возрастают через один. Формула сложная, но, на мой взгляд, написать скрипт можно, ничего сверхестественного в ней нет.
|
|
| |
Alex3A | Дата: Четверг, 25 Октября 2007, 20:36 | Сообщение # 14 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Что то типа, так?
|
|
| |
as-master | Дата: Четверг, 25 Октября 2007, 22:00 | Сообщение # 15 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Alex3A) Что то типа, так? Прикрепления: test.mbd Не понял юмора :-(
Да пребудет с вами ММВ!
|
|
| |
Rush | Дата: Пятница, 26 Октября 2007, 16:15 | Сообщение # 16 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (basme) sin(x)=x/1!-(x^3)/3!+(x^5)/5!-(x^7)/7!+... R Пробовал я и по этой формуле: f=1 y=3 sinX=x-(x*x*x)/(1*2*3) For i=1 To 30 y=y+2 mod=mod<>TRUE For n=2 To y f=f*n Next n If (mod) Then sinX=sinX+x^y/f Else sinX=sinX-x^y/f End f=1 Next i Message("","sinX") И по формуле Эйлера(правда, она дает сравнительно точный результат при очень больших циклах, а значит и медленней намного.): x2=x*x pi2=3.14159265359*3.14159265359 sinX=x*(1-x2/pi2) For i=2 To 100000 y=(i*i)*pi2 sinX=sinX*(1-x2/y) Next i Message("","sinX") х - выбираемое число. Но... Все в радианах идет... Хотя можно и перевод сделать. Из градусов в радианы: radian=degree*3.14159265359/180 В другую сторону: degree=radian*180/3.14159265359 Добавлено (26 Октября 2007, 16:15) --------------------------------------------- Quote (as-master) Не понял юмора :-( Да чего там... Он сделал пример с внедренным приложением, которое считает синус и косинус. Как будто об этом речь... Написать модуль не проблема - разговор идет об ММВ и математике... А результат если не выводится (не успевает обработать) - убери Clipboard("SEND","ss$").
Сообщение отредактировал Rush - Пятница, 26 Октября 2007, 16:28 |
|
| |
basme | Дата: Пятница, 26 Октября 2007, 16:19 | Сообщение # 17 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| Quote (Rush) mod=mod<>TRUE Ух-ты! Так можно... Ладно, учту. А я-тол разбивал всю операцию на две части...
|
|
| |
as-master | Дата: Пятница, 26 Октября 2007, 16:47 | Сообщение # 18 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (as-master) Не понял юмора :-( Quote (Rush) А результат если не выводится (не успевает обработать) - убери Clipboard("SEND","ss$") Вот потому я и написал, что не работало ни фига... С твоей помощью хоть увидел, что работает :) Правда, коряво... А что там внедренный файл используется, я понял, видел его. Quote (Rush) И по формуле Эйлера... Круто! А что ты имеешь в виду под сравнительной точностью? Например, чтобы крутить регулятор громкости, точность нужна невысокая - плюс-минус пару градусов. Quote (Rush) mod=mod<>TRUE Кстати! Почему про эту фишку нет в твоей статье Недокументированные возможности ММВ, или 12 полезных советов? Как раз сегодня обновление статьи выложил на сайт. Помнится, у тебя были еще какие-то любопытные фишки...
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Пятница, 26 Октября 2007, 20:45 | Сообщение # 19 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Убери строку Clipboard("SEND","ss$") Делап впопыхах, и не то выложил. Короче, если будут пожелания народа, могу сделать обработку геометрических функций, в градусах. Надо определиться в каком виде, плагин или внедренный файл. Буфер обмена пока что то приглючивает, можно передавать результат через файл или через реестр, это в случае внедренного файла. Ну а с плагином через стандартные команды, только вы плагины не любите. Какие функции нужны?Добавлено (26 Октября 2007, 20:45) --------------------------------------------- P.s. Quote А результат если не выводится (не успевает обработать) - убери Clipboard("SEND","ss$"). Clipboard не лучший вариант, глючит! А функции все стандартные, если это академический вопрос, дело третье! Я грешным делом подумал что для дела.
|
|
| |
basme | Дата: Пятница, 26 Октября 2007, 20:49 | Сообщение # 20 |
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
| ПОЖЕЛАНИЯ БУДУТ! С моей стороны - точно, потому что мне это надо. Желательно - в виде внедрённого. Нужны - синус, косинус, тангенс. Гиперболических, так и быть, не надо.
|
|
| |
Alex3A | Дата: Пятница, 26 Октября 2007, 21:01 | Сообщение # 21 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| А чего так бояться плагинов? Ведь скорость обмена будет повыше, да и плагин тоже может быть внедренным. Но если все же файл то определимся со способом передачи ответа. Размеры плагина и файла идентичны. Можно сделать по функции на каждую нужду, а можно передавать все в массиве. Вводим угол и получаем результаты всех функций, в массиве. Как будет удобней?
|
|
| |
as-master | Дата: Пятница, 26 Октября 2007, 22:11 | Сообщение # 22 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Алекс, однозначно делай плагин. Нечего с буфером геморроиться, надоело уже это. А удобней будет каждую функцию получать отдельно, конечно же. С другой стороны, если в массиве - то меньше переменных. А нужную из массива всегда легко выдернуть. И если уж делать плагин, то включить в него: 1. Тригонометрические функции, четыре штуки. 2. Корень квадратный и степень числа. 3. На твое усмотрение.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Пятница, 26 Октября 2007, 23:16 | Сообщение # 23 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Хорошо! Ловите пока то что успел сделать! "просто добавь воды" (запусти проект)
|
|
| |
Alex3A | Дата: Пятница, 26 Октября 2007, 23:17 | Сообщение # 24 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Но мне больше нравится такая обвязка.
|
|
| |
as-master | Дата: Суббота, 27 Октября 2007, 00:05 | Сообщение # 25 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Ит'с вери гуд! Лично мне уже в таком виде пойдет - не хватает только квадратного корня, который действительно может часто понадобиться. Может, добавишь? Quote (Alex3A) Но мне больше нравится такая обвязка. Ну конечно, так писать сценарии разумнее ;)
Да пребудет с вами ММВ!
|
|
| |
Rush | Дата: Суббота, 27 Октября 2007, 03:29 | Сообщение # 26 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (as-master) Кстати! Почему про эту фишку нет в твоей статье Да, я думал, что раз уже давно ее выкладывал, то ее уже все знают. Все опять свелось к тому, чтобы взять готовые решения. Конечно, в Делфи, как и в других языках, все это уже есть в виде внутренних функций - и синус, и косинус, и тангенс, и арктангенс, и корень, и логарифмы, и экспонента...
|
|
| |
as-master | Дата: Суббота, 27 Октября 2007, 12:17 | Сообщение # 27 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Rush) Да, я думал, что раз уже давно ее выкладывал, то ее уже все знают. Нет, далеко не все. И потому стоит увековечить это в статье. Если найдешь еще пару-тройку подобных фишек, то статью еще раз дополним. Quote (Rush) Все опять свелось к тому, чтобы взять готовые решения А куда ж деваться, если ММВ этого не умеет, хоть зарежься... Другое дело, когда есть достойное решение внутренними функциями ММВ. Тогда, как говорится, западло использовать плагины :)
Да пребудет с вами ММВ!
|
|
| |
Rush | Дата: Суббота, 27 Октября 2007, 14:07 | Сообщение # 28 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Quote (as-master) Нет, далеко не все. И потому стоит увековечить это в статье. Если найдешь еще пару-тройку подобных фишек, то статью еще раз дополним. Да есть еще. А сколько я позабыл уже... Глядишь, и дополним статью. Например, можно сказать о масках для проверки определенных условий. Тоже не все пользуются... Собственно совет я уже подготовил, только пример достойный не совсем маленьким получается. Quote (as-master) А куда ж деваться, если ММВ этого не умеет, Я ведь не в укор. Просто мне как-то скучно становится. Интересней бороться с трудностями. Хотя ММВ иногда по-глупому чего-то не умеет. Те же матфункции легко могли быть встроены в скриптовый язык. Или вот еще - ММВ не понимает нулевой символ ASCII. Глупости какие-то. Если бы не эта дурацкая недоделка, можно было бы спокойно в ММВ работать не только с текстом, а с любыми данными. Например, тот MP3Tag Viewer я бы мог сделать полностью скриптами ММВ. Правда, длина кодов была бы ого-го и работал бы он намно-о-ого медленней... Кстати, в новой версии, может, исправили это дело?
|
|
| |
as-master | Дата: Суббота, 27 Октября 2007, 14:16 | Сообщение # 29 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Quote (Rush) Глядишь, и дополним статью. НЕПРЕМЕННО!!! Quote (Rush) Я ведь не в укор. Интересней бороться с трудностями. Дык, я полностью солидарен с тобой в данном вопросе! Именно поэтому в моих проектах вообще практически не бывает плагинов, за исключением плагинов для трея и прозрачности. Quote (Rush) Кстати, в новой версии, может, исправили это дело? Ну качни бетку и посмотри. Бетка всего 3,3 Мб, у меня на главной ссылка лежит. Или скажи, как проверить - я сам проверю.
Да пребудет с вами ММВ!
|
|
| |
Alex3A | Дата: Суббота, 27 Октября 2007, 14:47 | Сообщение # 30 |
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
| Позже добавлю все что есть, мож кому пригодится.
|
|
| |