Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > [C]Символьный решатель интегралов |
Автор: Пингвина 15.11.2006, 16:25 |
вот задали курсовую написать... хорошо бы, если бы помогли. нигде ничего в инете найти не могу! помогите, что ли... |
Автор: Partizan 15.11.2006, 16:28 |
ну а что... алгоритм прост.... 1. нужен анализатор(парсер) математического выражения....можно использовать обратную польскую нотацию см www.algolist.ru 2. используешь численные методы нахождения интегралов.... |
Автор: Sartorius 15.11.2006, 17:57 |
Partizan, как я понял ("символьный решатель интегралов") человеку нужно не определенный интеграл численно посчитать, а найти вид первообразной ф-ии (для простых случаев) . Пингвина, так??? ![]() |
Автор: Partizan 15.11.2006, 18:53 |
Sartorius, =) ну если так , то задача сводится к вбиванию "базы" простых первообразных =) |
Автор: IvanoffAndrey 15.11.2006, 21:02 |
Вспомнил - данный пример разобран в Книге Архангельского "Приемы программирования в Delphi 5-7" - прямо есть то что нужно. Если книгу в нете не найдешь отпишись помагу. |
Автор: Пингвина 17.11.2006, 20:03 |
Partizan, да, именно это препод и хочет увидеть Добавлено @ 20:04 Partizan, если бы еще показали как это будет выглядеть! и еще вывод результата как написать???????? |
Автор: Partizan 17.11.2006, 22:19 | ||||
и всё -таки что конкретно от вас хотят?
или
|
Автор: Partizan 19.11.2006, 18:53 | ||||||
albertn
|
Автор: Пингвина 23.11.2006, 17:02 |
могу пример привести: на ввод: 3*(x**2)+(x**3-x)*(x-1) должно вывести: 6*x+(3*x-1)*(x-1)+(x**3-x)*1 ну или что-то вроде этого ![]() Добавлено @ 17:03 не правильно я вывод написала!))))) это я производную написала.... Добавлено @ 17:04 короче, в выводе должна быть первообразная |
Автор: albertn 23.11.2006, 17:12 |
А какие то возможны функции (sin, cos, ln, tg, exp, ...), или только числа, x, арифметические операции, скобки и возведение в степень? Добавлено @ 17:19 Если так, то все оказывается несложным. Вот необходимая структура алгоритма:
|
Автор: Пингвина 24.11.2006, 19:32 |
там должны участвовать и синусы, и косинусы, и логарифмы... и еще хотелось бы в программном виде увидеть ввод, вывод на экран и хотябы пару примеров с син и со степенью! ![]() |
Автор: JackYF 24.11.2006, 19:41 |
Ага, а мне интересно, как программно вы будете брать интегралы типа x*log(x), x*x*sin(x) и т.д. Не думаю, что это можно быстро запрограммить. Те интегралы, что я назвал, берутся по частям( иногда даже не один раз ). Не представляю себе, как нормально это программно реализовать - можно теоретически, но уж очень геморно... Пингвина, не знаю... Наверное, математический парсинг и математическое интегрирование сделать будет трудно. Добавлено @ 19:43 А если потребуется замена переменной, то там вообще ... ! |
Автор: Пингвина 27.11.2006, 09:05 |
спасибо, прямо обнадежили! можете, хотябы, для простых полиномов и синусов, косинусов написать?? ![]() |
Автор: Silver 27.11.2006, 10:18 |
Первые программы символьного интегрирования были написаны еще в начале 60 - ых. Для интеграла там строилось последовательное дерево решений...на каждом узле дерева применялись различные методов интегрирования ... Данная задача скорее всего решаеться с использованием продукционной системы правда когда неизвестен конечный результат. (продукционные экспертные системы) это один из методов ИИ. Используються те же методики что и вмашинном доказательстве теорем. Основная трудность избежать зацикливания. |
Автор: JackYF 27.11.2006, 14:35 | ||
Вначале весь интеграл представляешь как сумму разных интегралов, где каждый меньшее подинтегральное выражение может быть либо полиномом, либо a*sin(nx), либо a*cos(nx). a*sin(nx) -> -(a/n)cos(nx) a*cos(nx) -> (a/n)sin(nx) Для полинома интеграл тебе уже написали раньше. Дальше вычисленные интегралы опять превращаешь в сумму и получаешь одно больше выражение - интеграл. В базу можно еще вбить интегралы для других простейших интегралов, если надо... |
Автор: Пингвина 27.11.2006, 16:16 |
если не трудно, на СИ можете мне написать ввод интеграла, преобразование его в то, с чем мне уже надо работать и вывод результата! мне почему-то это в голову не приходит ![]() |
Автор: _hunter 27.11.2006, 16:28 |
ты разделом ошибся. код пишут в разделах работа/цент помощи |
Автор: Пингвина 28.11.2006, 09:38 |
плохо, что здесь так помогают... еще и посылают(( Добавлено @ 09:39 видимо действительно ошиблась |