Форум
Написать нам
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: as-master  
Факториал числа
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 - хоть убейся... biggrin



Вечная память Андрею Сергееву!
 
as-masterДата: Вторник, 23 Октября 2007, 23:40 | Сообщение # 7
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
...а также, как это ни странно, любое число в степени ноль равно единице smile
Математика, мать её величество :)










Да пребудет с вами ММВ!
 
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
Ну извини, я почему-то действительно прочитал не так smile











Да пребудет с вами ММВ!
 
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)
Вас в школе до девятого или даже десятого класса учат,что и корней из отрицательных чисел не бывает.

У нас в восьмом классе ввели понятие мнимых чисел, то есть, в том числе, и квадратных корней из отрицательных чисел.
К слову, сомнительно, что средствами Бэхи кому-нибудь придёт в голову вычислять то, при чём появляются факториалы нецелых чисел (я боюсь это вслух произносить biggrin ), а вот целые-то могут понадобиться.
 
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
Quote
sin(x)=x/1

Что то типа, так?
Прикрепления: test.mbd (16.8 Kb)
 
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
ПОЖЕЛАНИЯ БУДУТ! yes С моей стороны - точно, потому что мне это надо. Желательно - в виде внедрённого.
Нужны - синус, косинус, тангенс.
Гиперболических, так и быть, не надо. biggrin
 
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
Хорошо!
Ловите пока то что успел сделать!
"просто добавь воды" (запусти проект)
Прикрепления: geo1.mbd (23.7 Kb)
 
Alex3AДата: Пятница, 26 Октября 2007, 23:17 | Сообщение # 24
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Но мне больше нравится такая обвязка.
Прикрепления: geo.mbd (23.6 Kb)
 
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)
Кстати! Почему про эту фишку нет в твоей статье

Да, я думал, что раз уже давно ее выкладывал, то ее уже все знают.

Все опять свелось к тому, чтобы взять готовые решения. smile Конечно, в Делфи, как и в других языках, все это уже есть в виде внутренних функций - и синус, и косинус, и тангенс, и арктангенс, и корень, и логарифмы, и экспонента...

 
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)
Нет, далеко не все. И потому стоит увековечить это в статье.
Если найдешь еще пару-тройку подобных фишек, то статью еще раз дополним.

Да есть еще. А сколько я позабыл уже... smile Глядишь, и дополним статью. Например, можно сказать о масках для проверки определенных условий. Тоже не все пользуются... smile Собственно совет я уже подготовил, только пример достойный не совсем маленьким получается.
Quote (as-master)
А куда ж деваться, если ММВ этого не умеет,

Я ведь не в укор. smile Просто мне как-то скучно становится. Интересней бороться с трудностями.
Хотя ММВ иногда по-глупому чего-то не умеет. Те же матфункции легко могли быть встроены в скриптовый язык. Или вот еще - ММВ не понимает нулевой символ ASCII. Глупости какие-то. Если бы не эта дурацкая недоделка, можно было бы спокойно в ММВ работать не только с текстом, а с любыми данными. Например, тот MP3Tag Viewer я бы мог сделать полностью скриптами ММВ. Правда, длина кодов была бы ого-го и работал бы он намно-о-ого медленней... smile
Кстати, в новой версии, может, исправили это дело?
 
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
Позже добавлю все что есть, мож кому пригодится.
Прикрепления: geo.mbd (26.6 Kb)
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: