практикум №2, реализация символьного вычисления производных
Соберите проект:
$ mkdir build && cd build
$ cmake ..
$ makeДля подключения основной библиотеки
#include "inc/Expression.h"В CMakeList
include_directories(inc)Для подключения парсера из строчки в Expression (вместе с Expression)
#include "inc/Parser.h"
#include "inc/Expression.h"В CMakeList
include_directories(inc)
file(GLOB TOKEN_SOURCES
src/Token.cpp
)
add_library(TOKEN ${TOKEN_SOURCES})
target_link_libraries(YOUR_TARGET PRIVATE TOKEN)
Создание выржаения
auto expr = std::make_shared<BinaryExpression<double>>(
std::make_shared<MonoExpression<double>>(
std::make_shared<VarExpression<double>>("x"),
sin_func
),
std::make_shared<ConstantExpression<double>>(3),
mul_op
);Класс поддерживает операции div(std::string &s) и eval(std::map<std::string, double> ¶ms)
auto expr_diff = expr->diff(s);
double value = expr>eval(params);Для печати есть функция toString()
std::cout >> expr->toString();Также можно подключить отптимизацию
auto expr_optimize = optimize(expr);Чтобы преобразовать строку в Expression
auto tokens = tokenize(str);
auto expr = parseExpression(tokens.get())Тесты будут находиться в папке test, запустить их можно следубщими командами
$ cd tests
$ ./testsType