Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 20.10.2011, 01:59   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Символьное интегрирование

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

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

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

Кто-нибудь знает??
(Offline)
 
Ответить с цитированием
Старый 20.10.2011, 02:26   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Символьное интегрирование

Тююю - а я думал (прочитав заголовок): что-то интересное будет.
Кто-то знает. Собственно, последовательность действий расписана верно. Что конкретно тебя смущает?
Вообще, задача (особенно, как мне видется, в плане символьного нахождения первообразной) нетривиальна. Ты уверен, что тебе надо именно это? Численное интегрирование не подойдёт?
апд: готовые либы/модули опять же
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (20.10.2011)
Старый 20.10.2011, 02:54   #3
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Символьное интегрирование

тебе нужен свой алгоритм или программа что бы это делала ?? Если второе то гугл же !!
(Offline)
 
Ответить с цитированием
Старый 20.10.2011, 11:23   #4
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Символьное интегрирование

надо именно свой алгоритм. Численное интегрирование проще, не спорю...даже легко реализуемо, но хотелось бы именно символьное. в гугле ничего толкового не нашел.
Что конкретно тебя смущает?
Последующие операции с древом. ХЗ как его интегрировать.
(Offline)
 
Ответить с цитированием
Старый 20.10.2011, 13:03   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Символьное интегрирование

Сообщение от Павел Посмотреть сообщение
ХЗ как его интегрировать.
.....
Сообщение от impersonalis Посмотреть сообщение
Вообще, задача (особенно, как мне видется, в плане символьного нахождения первообразной) нетривиальна. Ты уверен, что тебе надо именно это?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 20.10.2011, 14:58   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Символьное интегрирование

Первое что в голову приходит, так это задача разбить строку на блоки, исходя из приоритетов по вычислениям.
Если начать с начала "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
Исходя из скобок и т.п., можно вычислить приоритеты. Если по пути выражения бало найдено выражение со скобками, то нужно повысить приоритет относительно контейнера выражений в котором он находится. Каждое выражение может быть контейнером других, и приоритеты локальны (в скобках и т.п.).
Разбив так вот, можно уже интерпретировать в мат функции, т.к. компоненты намного проще.
Далее уже двигаться далее, тут уже математика, я хз в этом..

Кто-то у нас на форуме делал подобное..
(Offline)
 
Ответить с цитированием
Старый 20.10.2011, 22:05   #7
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Символьное интегрирование

Сообщение от MoKa Посмотреть сообщение
Первое что в голову приходит, так это задача разбить строку на блоки, исходя из приоритетов по вычислениям.
Если начать с начала "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
Исходя из скобок и т.п., можно вычислить приоритеты. Если по пути выражения бало найдено выражение со скобками, то нужно повысить приоритет относительно контейнера выражений в котором он находится. Каждое выражение может быть контейнером других, и приоритеты локальны (в скобках и т.п.).
Разбив так вот, можно уже интерпретировать в мат функции, т.к. компоненты намного проще.
Далее уже двигаться далее, тут уже математика, я хз в этом..

Кто-то у нас на форуме делал подобное..
Если интегрировать с низших ветвей вверх, может получиться что-нито, возможно...
(Offline)
 
Ответить с цитированием
Старый 24.10.2011, 23:03   #8
genroelgvozo
Нуждающийся
 
Регистрация: 08.05.2008
Сообщений: 87
Написано 9 полезных сообщений
(для 15 пользователей)
Ответ: Символьное интегрирование

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


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com