forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Символьное интегрирование (http://forum.boolean.name/showthread.php?t=15685)

Reizel 20.10.2011 01:59

Символьное интегрирование
 
В общем, имеется некоторая функция f(x), заданная строкой.
Что-то типа "2*x+sin(e^(cos(x*x)))"
Необходимо найти первообразную этой функции.

Я думаю, что сначала нужно разбить исходную функцию на дерево операций (алгоритм), после чего каким-то алгоритмом интегрировать эту дурь.

В общем, на выходе должно получиться дерево операций, но уже первообразной для данной функции.

Кто-нибудь знает??

impersonalis 20.10.2011 02:26

Ответ: Символьное интегрирование
 
Тююю - а я думал (прочитав заголовок): что-то интересное будет.
Кто-то знает. Собственно, последовательность действий расписана верно. Что конкретно тебя смущает?
Вообще, задача (особенно, как мне видется, в плане символьного нахождения первообразной) нетривиальна. Ты уверен, что тебе надо именно это? Численное интегрирование не подойдёт?
апд: готовые либы/модули опять же

IGR 20.10.2011 02:54

Ответ: Символьное интегрирование
 
тебе нужен свой алгоритм или программа что бы это делала ?? Если второе то гугл же !!

Reizel 20.10.2011 11:23

Ответ: Символьное интегрирование
 
надо именно свой алгоритм. Численное интегрирование проще, не спорю...даже легко реализуемо, но хотелось бы именно символьное. в гугле ничего толкового не нашел.
Цитата:

Что конкретно тебя смущает?
Последующие операции с древом. ХЗ как его интегрировать.

pax 20.10.2011 13:03

Ответ: Символьное интегрирование
 
Цитата:

Сообщение от Павел (Сообщение 206384)
ХЗ как его интегрировать.

.....
Цитата:

Сообщение от impersonalis (Сообщение 206371)
Вообще, задача (особенно, как мне видется, в плане символьного нахождения первообразной) нетривиальна. Ты уверен, что тебе надо именно это?


moka 20.10.2011 14:58

Ответ: Символьное интегрирование
 
Первое что в голову приходит, так это задача разбить строку на блоки, исходя из приоритетов по вычислениям.
Если начать с начала "2*x+sin(e^(cos(x*x)))", то будет:
[1] = 2*x
[2] = [1] + [3]
[3] = sin([4])
[4] = e ^ [5]
[5] = cos([6])
[6] = x * x
Исходя из скобок и т.п., можно вычислить приоритеты. Если по пути выражения бало найдено выражение со скобками, то нужно повысить приоритет относительно контейнера выражений в котором он находится. Каждое выражение может быть контейнером других, и приоритеты локальны (в скобках и т.п.).
Разбив так вот, можно уже интерпретировать в мат функции, т.к. компоненты намного проще.
Далее уже двигаться далее, тут уже математика, я хз в этом..

Кто-то у нас на форуме делал подобное..

Reizel 20.10.2011 22:05

Ответ: Символьное интегрирование
 
Цитата:

Сообщение от MoKa (Сообщение 206400)
Первое что в голову приходит, так это задача разбить строку на блоки, исходя из приоритетов по вычислениям.
Если начать с начала "2*x+sin(e^(cos(x*x)))", то будет:
[1] = 2*x
[2] = [1] + [3]
[3] = sin([4])
[4] = e ^ [5]
[5] = cos([6])
[6] = x * x
Исходя из скобок и т.п., можно вычислить приоритеты. Если по пути выражения бало найдено выражение со скобками, то нужно повысить приоритет относительно контейнера выражений в котором он находится. Каждое выражение может быть контейнером других, и приоритеты локальны (в скобках и т.п.).
Разбив так вот, можно уже интерпретировать в мат функции, т.к. компоненты намного проще.
Далее уже двигаться далее, тут уже математика, я хз в этом..

Кто-то у нас на форуме делал подобное..

Цитата:

Алгоритм
Если интегрировать с низших ветвей вверх, может получиться что-нито, возможно...

genroelgvozo 24.10.2011 23:03

Ответ: Символьное интегрирование
 
Что-нито может получиться только в частных случаях
обычная суперпозиция функций очень не обычно интегрируется, а при разных функциях вообще разные методы
и еще, бывают интегралы не берущиеся, которые выражаются через известные дельта, гамма функции и т.д. и мне интересно как ты их будешь определять
и мне кажется что тут обычно делают разбор по частным случаям и методам, и чем больше вариантов ты сделаешь, тем больше функций у тебя программа сможет проинтегрировать


Часовой пояс GMT +4, время: 06:28.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot