21

Re: Новий алгоритм

На математичних алгоритмах спеціалізується Wolfram Research

22

Re: Новий алгоритм

elektryk написав:

Може підкажете видання. Або просто якусь фірму з математичного забезпечення.

це я так...

як казав мені один прошарений викладач в ліцеї: "якщо ви зробили якесь математичне відкриття, то вам потрібно їхати в інститут математики *тут адреса інституту*, заходите в корпус, повертаєте праворуч, там сидітиме бабуся на рецепшині - от вам прямо до неї"
З.І. це він нас так тонко посилав

Подякували: Очі.завидющі1

23 Востаннє редагувалося Очі.завидющі (14.08.2013 12:13:58)

Re: Новий алгоритм

@elektryk
Ми вам не віримо, бо коли електрик в пивному ресторані напише лютий математичний алгоритм станеться Раґнарок.
Виключення я бачив лише у фільмі "The Lawnmower Man". Звичайно, що нам було б приємно побачити такого лютого кіберпанка, тому викладайте код тут. Не сприйміть за образу, ми усіляко підтримуємо ваше захоплення.

Раґнарок

http://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Johannes_gehrts_ragnarok_mindre.JPG/800px-Johannes_gehrts_ragnarok_mindre.JPG

24

Re: Новий алгоритм

Очі.завидющі написав:

На математичних алгоритмах спеціалізується Wolfram Research

Я з ними зв*язався. Вони виявились звичайнісінькими москалями.

25 Востаннє редагувалося elektryk (17.08.2013 12:57:32)

Re: Новий алгоритм

Очі.завидющі написав:

@elektryk

То це Ви так намагаєтесь мене образити??

Очі.завидющі написав:

Ми вам не віримо

Та будь ласка. Але ж Ви не можете спростувати того факту, що не зустрічали обчислення визначника за його означенням. Більш того: ніхто навіть питання так не ставив. Всі вдовольнялися тим що є.

26

Re: Новий алгоритм

вже сильно підзабув математику, але, здається, на першому курсі , ми теж на бесику щось подібне програмували.
чи не про це йде мова:

4. Алгоритмічна реалізація

    Наївні методи для обчислення визначника можуть бути засновані безпосередньо на його визначенні, як суми по перестановок, або на розкладанні Лапласа по визначників меншого порядку. Однак такі методи дуже неефективні, оскільки вимагають Про ( n!) операцій для обчислення визначника n -Го порядку.
    Один з більш швидких методів полягає в простій модифікації методу Гауса. Дотримуючись методу Гаусса, довільну матрицю A можна привести до ступінчастому увазі (Верхнетреугольная матриця), використовуючи лише дві такі операції над матрицею - перестановку двох рядків і додавання до одного з рядків матриці іншого рядка, помноженої на довільне число. З властивостей означника випливає, що друга операція не змінює визначника матриці, а перша лише змінює його знак на протилежний. Визначник матриці, приведеної до ступінчастому увазі, дорівнює добутку елементів на її діагоналі, так як вона є трикутної, тому визначник вихідної матриці дорівнює:

        \! \ Det A = (-1) ^ s \ cdot \ det A_ {\ mbox {ref}},

    де s - Число перестановок рядків, виконаних алгоритмом, а A ref - Ступінчаста форма матриці A , Отримана в результаті роботи алгоритму. Складність цього методу, як і методу Гаусса, становить O (n 3) .

    Визначник можна обчислити, знаючи LU-розкладання матриці. Якщо A = L U , Де L і U - Трикутні матриці, то det A = (det L) (det U) . Визначник трикутної матриці дорівнює просто твору її діагональних елементів.
    Якщо доступний алгоритм, що виконує множення двох матриць порядку n за час M (n) , Де M (n) \ geqslant n ^ a , Для деякого a> 2 , То визначник матриці порядку n може бути обчислений за час O (M (n)) . [1] Зокрема це означає, що, використовуючи для множення матриць алгоритм Копперсміта - Винограду, визначник можна обчислити за час O (n 2.376) .

http://znaimo.com.ua/%D0%92%D0%B8%D0%B7 … 0%B8%D0%BA

27

Re: Новий алгоритм

elektryk написав:
Очі.завидющі написав:

@elektryk

То це Ви так намагаєтесь мене образити??

@ - не знак образи, але конкретизації звернення (альтернатива цитатам).

28

Re: Новий алгоритм

Хоча знак образи це нова думка. Я над цим ще поміркую :)

29

Re: Новий алгоритм

ping написав:

вже сильно підзабув математику, але, здається, на першому курсі , ми теж на бесику щось подібне програмували.
чи не про це йде мова: Алгоритмічна реалізація
    Наївні методи для обчислення визначника можуть бути засновані безпосередньо на його визначенні, як суми по перестановок, Однак такі методи дуже неефективні, оскільки вимагають Про (n!) операцій для обчислення визначника n -Го порядку.

Саме про це мова. Дійсно вони вимагають (n!) операцій. Точніше вимагали доки не нарвались на мене. Тепер вони вимагають втричі менше (n!)/3 операцій.

Оскільки я не математик і не програміст, то маю право на деякі фокуси. Я підмітив одну закономірність і її використав. Математики завили: партизанщина, шарлатанство, хуліганство. Це недоведомо (Это не доказуемо - рос.)
Може й так, але ж працює безвідмовно.

30

Re: Новий алгоритм

elektryk
Так де можна Ваш алгоритм протестувати?

31

Re: Новий алгоритм

elektryk написав:

Тепер вони вимагають втричі менше (n!)/3 операцій.

Ви коли небудь чули про O-нотацію? Ваш "новий" алгоритм нічим не кращий за "старий". І взагалі, якщо на то пішло, можна використати динамічне програмування і рішити цю задачу за O (N * 2^N) теж без ділення.

Якщо не хватає точності double для обчислень, можна підключити додаткові бібліотеки, в яких використовуються числа з довільною точністю і це все рівно буде краще за лобовий алгоритм.

32

Re: Новий алгоритм

Так, я не чув про O-нотацію. Я також не чув слова "хватає" в такому значенні.

33

Re: Новий алгоритм

elektryk написав:

Так, я не чув про O-нотацію. Я також не чув слова "хватає" в такому значенні.

Перепрошую за мій галицький діалект.

O-нотація

34

Re: Новий алгоритм

Виявляється, що я теж галичанин. Усе життя мені здавалося, що я наддніпрянець і тут мені одкрилась істина :o

Подякували: Chemist-i1

35

Re: Новий алгоритм

Мій син вживає терміни "вистачає" або "досить", а не "хватає". Хоча можна "хватать" дівку на танцях.

36 Востаннє редагувалося User 298 (15.03.2014 14:31:24)

Re: Новий алгоритм

Chemist-i написав:

elektryk
Так де можна Ваш алгоритм протестувати?

Я вибачаюсь за російську мову та

Прихований текст

Численные методы или аналитические?

С развитием вычислительной техники началось бурное злоупотребление численными методами в ущерб аналитическим. Такая практика вредит в первую очередь самим численным методам. При той же машинной ошибке усечения и округления аналитические методы дают самые точные результаты и существенно превосходят численные. Желательно их использовать при малейшей возможности.
Возьмем, например, вычисление определителя, потому что эта процедура очень широко применяется в численных методах.
Сейчас определители вычисляются методом Гаусса. Теоретически этот метод дает точное значение определителя. На практике могут возникать большие погрешности, особенно в тех случаях, когда определитель близок к нулю. Такая ситуация часто возникает при математическом моделировании. Исследователь не всегда знает, какие факторы влияют на процесс. Он вводит все подряд искренне веря, что статистика отсеет лишние. А в результате получается плохо обусловленная матрица.
В методе Гаусса применяется много операций деления. Как известно, операция деления дает наибольшую ошибку на ЭВМ из четырех арифметических действий. Перестановка строк и столбцов матрицы радикально не решает этой проблемы. Не спасает и двойная точность.
Но ведь есть же аналитический способ вычисления определителя. В этом способе вообще нет операций деления. Он не применяется потому, что считается очень медленным. Этот тезис о медлительности кочует из книги в книгу больше сотни лет. За это время сменилось несколько поколений вычислительных машин и их создателей. Может пора его (тезис) пересмотреть? А если не пора, так я упростил алгоритм, чтобы не пугать программистов словом "инверсия".
Рассмотрим, как работает классический аналитический метод вычисления определителя.
Нам дана квадратная матрица A с элементами аji. Порядок матрицы n

Таким образом из элементов матрицы А сначала составляются все возможные произведения    из n сомножителей каждое. Эти произведения содержат по одному элементу из каждой строки и по одному из каждого столбца. Так вычисляется слагаемое. Знак слагаемого определяется количеством инверсий z данной перестановки сомножителей. Полученные n! (n-факториал) слагаемых и составляют в сумме определитель det A. Практической реализации этого метода я не встречал. Подозреваю, что она не существует. Поэтому пришлось самому создать алгоритм. Вот он:
1 МАССИВ a(n,n): det=0
2 FOR m=1 TO n! : s=1
3 Создание перестановки из набора чисел 1,2,3,...,n , то есть вычисление i1, i2,i 3,...,in
4 Вычисление слагаемого
FOR j=1 TO n
s=s*a(j,i(j)): NEXT j
5 Вычисление количества инверсий z
6 Присвоение знака слагаемому s=s*(-1)z
7 Суммирование слагаемых
det=det+s: NEXT m
8 PRINT det
Заметьте, что в этом алгоритме нет ни одной операции деления.
Остановлюсь подробнее на вычислении количества инверсий z.
5.1 z=0
5.2 FOR j=1 TO n-1
5.3 FOR k=2 TO n
5.4 IF i(j) > i(k) THEN z=z+1
5.6 NEXT k: NEXT j
В чем же заключается модернизация?
1 Нет вычисление количества инверсий.
2 В присвоении знака нет возведение в степень (-1)z.
Как же происходит разделение слагаемых на положительные и отрицательные?
Это мое "ноу-хау (know how)".
Проверка показала, что модернизированный алгоритм работает втрое быстрее исходного, но всё таки медленнее метода Гаусса.

37

Re: Новий алгоритм

@elektryk

Якщо наведений текст є цитатою - візьміть його у тег цитати. Якщо Ваш власний - перекладіть, будь-ласка, українською: правила єдині для всіх.

38

Re: Новий алгоритм

Bartash написав:

@elektryk

Якщо наведений текст є цитатою - візьміть його у тег цитати. Якщо Ваш власний - перекладіть, будь-ласка, українською: правила єдині для всіх.

Гаразд. Трішки пізніше.

39

Re: Новий алгоритм

НЕмає часу перекладать, тож видаляйте.

40

Re: Новий алгоритм

Зареєструвався, щоб прокоментувати...
Пане  elektryk, а Ви ще не публікували розв'язків Великої Теореми Ферма?

Подякували: quez1