Страница 1 из 1

Помогите решить задачу "Производная" (Delphi)

Добавлено: 14 окт 2008, 16:07
RelicT
Задача состоит в следующем: вводиться функция от одной переменной. Нужно взять ее производную и построить ее график. Приблизительно, нужна следующая функция:
function proizvod(a:string):string; //общая производная
var a:string;
begin
repeat
repeat
zamen:=false;
a:=psum(a); //производная суммы и разности
a:=pproi(a); //производная поизведения и частного
until zamen=false;
a:=ptab(a); //производная табличных величин
until zamen=false;
a:=pupro(a); //упрощение внешнего вида формулы
proizvod:=a;
end;
Буду очень благодарен за помощь )) Я думаю нужно еще учесть скобки...

А вот и сам алгоритм:
1. Замена стандартных обозначений функций их краткими служебными названиями для ускорения работы программы.
2. Повторять замену производных суммы (разности) и произведения (частного) по соответствующим формулам, пока не останется ни одной производной суммы (разности) и произведения (частного). При этом каждый раз необходимо раскрывать скобки.
3. Замена всех производных их табличными значениями.
4. Повторять пункты 2 и 3, пока не останется ни одной производной.
5. Упростить полученное выражение: выкинуть из произведения все единицы, выкинуть все члены, в которых встречаются нули и т.п.

Помогите, пожалуйста, собрать это все в одно целое...

Re: Помогите решить задачу "Производная" (Delphi)

Добавлено: 18 окт 2008, 13:22
Хыиуду
В каком виде вводится эта функция? Как строка или иначе?

Re: Помогите решить задачу "Производная" (Delphi)

Добавлено: 22 окт 2008, 10:11
RelicT
Как строка. Я проделал следующую работу: все числа-константы(на которые множат и которые прибавляют) заменил на "ki", где і - номер числа в строке(это нам понадобится для того, чтоб быстрей взять производную и в конечном итоге правильно заменить ki на числа), и все степени(после знака "^" мы договорились ставить "(" и заканчивать ")") заменили на аі. Преподша сказала, что глубина функции не больше 2-х, то есть самое сложное, что можно вводить, это функция в функцие("f(g(x))", "f(x)^g(x)"...). В итоге мы приходим к виду вырежани, которое местит в себе: x, ki,ai. Все числа-константы я внес в масив "к", где каждое число отделяется ";", то же самое и для степеней в масив "а". Вообщем, это нужно увидеть код программы... Я начинающий программер, поэтому код там написан оч сложно ))) И мне стыдно его тут выкладывать, но если он Вам все таки нужен, то выложу ))