| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 видимо действительно ошиблась |