Victor Surozhtsev
Просветленный
(34291)
4 года назад
Можно сделать синтаксический разбор строки, то есть, например, при вводе
f = sin⁴X - ln|cosX| + expX программа бы автоматически распознавала функцию f как pow(sin(X),4)-log(fabs(cos(X)))+exp(X).
Но это ещё умéть надо! А производную в простейшем случае можно брать численно как (f(x+h)-f(x-h))/(2*h), где h, скажем, 1е-8 (ошибка будет ~h²).
Кстати, что это ещё там за дурь и бред пьяного крокодила про "символьные вычисления"? Считать же вроде, как я понял, надо на плюсах вовсе не "символьно", а вполне конкретно - численно!..
серега лавровУченик (8)
4 года назад
можете объяснить как это сделать? на примере какой-нибудь функции и желательно с кодом
Дано функцию f(x,y). Вывести на екран функцію g(x)=
Андрей
Высший разум
(425838)
4 года назад
Это называется "символьные вычисления" (в том числе и взятие прозводной). И, обычно, для этого используют более подходящие языки (как, например, Lisp или Prolog). Но и на C++ тоже можно: набери в Google: "C++ символьные вычисления" - получишь множество материалов.
Но тема эта большая и сложная - совсем не для "Ответов".
Дед МазайГений (58109)
4 года назад
Для "Ответов" (и вообще) подошёл бы вариант: порекомендовать библиотеку, которая решает эти задачи. Уверен, такие библиотеки есть.
Raiden
Мастер
(1650)
4 года назад
Функцию можно записать, в помощь алгоритм сортировочной станции и обратная польская нотация.
Производные - гугли библиотеки или методы, тут я бессилен.
---------------------------------------------------------------------------------------------------------------------------
Если есть возможность - ИМХО, для подобного предпочтительнее пайтон — там намного проще со всей этой ересью..
Jurijus Zaksas
Искусственный Интеллект
(424920)
4 года назад
Если производную надо найти в числовом, а не символьном виде, это можно сделать по определению производной:
f'(x)=(f(x+dx)-f(x))/dx при некотором малом dx
Для анализа собссно функции можно использовать динамическое программирование: генерируешь библиотеку со своей функцией, компилируешь ее и тут же подключаешь. Способ извращенческий, но гораздо проще, чем символьные вычисления, если делать с нуля. Ну а с символьными вычислениями все выше уже рассказали...