Вверх ↑
Ответов: 5446
Рейтинг: 323
#1: 2013-04-24 11:16:46 ЛС | профиль | цитата
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. Результат приводим в порядок: заменяем "+-" на "-"

карма: 1

0