Нахождение производной функции одной переменной с помощью польской нотации, С++
контрольные работы, Программирование Объем работы: Год сдачи: 2013 Стоимость: 200 руб. Просмотров: 953 | | |
Оглавление
Введение
Содержание
Заказать работу
Программа представляет консольное приложение, выполненное в Microsoft Visual Studio 2010.
Пример кода:
//вычисление производной выражения токенов в польской записи
//вычисляем с конца
//аргументы у функци должны быть удалены для удобства вычислениц
vector DerivateExpressionPol(vector exp)
{
vector::reverse_iterator it, it_f;
vector result, tmp;
Token token;
if(exp.size() == 1)
{
AddTokensToSource(result, DerivateFuncPol(exp.back()));
retu
result;
}
//если всего одно выражение - вида а?b
if(exp.size() == 3)
{
tmp = vector(exp.rbegin(), exp.rend());
reverse(tmp.begin(), tmp.end());
token = tmp.back();
tmp.pop_back();
Token f1 = tmp.back();
tmp.pop_back();
Token f2 = tmp.back();
tmp.pop_back();
retu
GetDerivationExpression(f2, f1, token);
}
// производную выражения ищем след. образом :
//берем 1-ю функцию списка, находим производную
//остальную часть списка берем как единую функцию и вычисляем её производную рекурсией
for(it = exp.rbegin(); it != exp.rend(); it++)
{
//если токен арифм. операция или уже набралось достаточно для дифференцирования
if(find(operations.begin(), operations.end(),it->type) != operations.end() || (tmp.size() >= 3 && IsFullOperationReverse(tmp)))
{
//если промежут стэк пустой - кладем всегда
if(tmp.empty())
{
tmp.push_back(*it);
continue;
}
//ещё нет выражения
else if(!OperandOrFuncExists(tmp))
{
tmp.push_back(*it);
continue;
}
//вычисляем все что есть в tmp
//производные первой и второй функции в виде списка токенов
vector deriv_f1, deriv_f2;
vector tmp_f1, tmp_f2;
Token f1 = tmp.back(); //берем 1-ый токен и ищем его производную
tmp.pop_back();//удаляем из промежут. стэка
vector deriv_result;
//если след токен - не операция,берем 2-ый токен и составляем первое выражение
if(!(find(operations.begin(), operations.end(),tmp.back().type) != operations.end()))
{
Token f2 = tmp.back();
tmp.pop_back();//удаляем из промежут....
Программа находит производную функции одной переменной. Необходимо ввести выражение (для переменной х), программа преобразует его в польскую нотацию, выводит пользователю, а далее выводит результат - выражение производной исходной функции (в стандартной нотации).
После офорления заказа Вам будут доступны содержание, введение, список литературы*
*- если автор дал согласие и выложил это описание.