knoot0279, очень хорошо. Вопрос номер два: мы ведём разговор о конкретной функции, только о полиномиальных функциях (т.е. без синусов-косинусов), или о произвольных?
В принципе, если в выражении нет скобок (т.е. функция вида y = a_0 + a_1*x + a_2*x^2 + ... + a_n*x^n, с явно проставленными операторами умножения), то алгоритм дифференцирования будет примерно такой:
0. Убираем из строки все пробелы
1. Заменяем везде "-" на "+-"
2. Разбиваем по "+" - получаем набор подстрок вида "a_i*x^i"
3. Каждую подстроку разбиваем по "*", правую часть дополнительно по "^"; получаем три подподстроки - "a_i", "x", "i". Если в подстроке "*" не встретилась - выбрасываем, если есть "*" но нет "^" - считаем i = 1.
4. Теперь применяем правило (x^n)' = n*x^(n-1): a_i умножаем на i (обозначим b_j), а i уменьшаем на 1 (обозначим j). Если новое i == 0, то в выходную строку пишем просто b_j, иначе b_j * x^j.
5. Результат приводим в порядок: заменяем "+-" на "-"
Ответов: 5446
Рейтинг: 323
|
|||
карма: 1 |
|