Домашнее задание 1 (продвинутый блок)

Формат сдачи

Дедлайн: 22 февраля, 23:59 Формат сдачи: ipynb-файл или py-файл с решением задач нужно загрузить на Dropbox по ссылке.

Multilivel option: если вы планируете для подстраховки выполнить часть базового домашнего задания 1, сделайте из него: 1) любые четыре задачи по 1 баллу или 2) две задачи по одному баллу, одну на 2 балла. При правильном выполнении базовых задач у вас в запасе будет 7 баллов из 10 (оценка 7), остальные баллы добавятся за счёт решённых задач из продвинутой части.

Познакомьтесь с кратким обзором функционала библиотеки SymPy и выполните следующие задания.

Задача 1

Упростите выражения или раскройте скобки. Если выражение содержит тригонометрические функции, оно должно быть раскрыто по соответствующим формулам (синус/косинус двойного угла, синус/косинус суммы/разности и прочее).

  • $\frac{1}{x} + \frac{1}{2x}$
  • $3(x+y)^2 + \cos(x+y)$
  • $\cos(2x + 1)$.

Задача 2

Найдите производную следующих функций в точке $x=3$:

  • $\log(x-3)$
  • $4x^3 - \cos(2x) + 1$.

Задача 3

Найдите точки экстремума функции $f(x)=(0.5 − x)\cos(x) + \sin(x)$ и посчитайте значение функции в этих точках.

Задача 4

Напишите код, который делает следующее:

  • Запрашивает у пользователя с клавиатуры выражение для функции $f(x)$ (давайте для простоты считать, что пользователь знает, что такое функция, и не будет вводить не-функции, например, $f(x)=|\sqrt{x}|$).

  • Запрашивает у пользователя отрезок, на котором его интересуют значения функции. Считайте, что пользователь отдельно (с новой строчки) вводит начало отрезка и конец.

  • Приводит запись к «питоновскому» виду: заменяет ^ на **, а фигурные/квадратные скобки – на круглые.

  • Выводит на экран результаты такого вида: рассматриваемая функция в «питоновском» виде, её первая и вторая производные, минимальное и максимальное значение функции на отрезке.

Пример:

Ввод:

Введите функцию: x^2 - 4
Введите начало отрезка: -3
Введите конец отрезка: 3

Вывод:

f(x) = x**2 - 4
первая производная: 2*x
вторая производная: 2
минимальное значение: -4
максимальное значение: 5

Подсказка: возможно, тут пригодится eval():

In [2]:
eval('2 * 5')
Out[2]:
10

Впрочем, использование eval() – не очень хороший тон, поскольку эта функция запускает код «как есть», не проверяя его валидность. Но давайте пока его оставим как самый простой способ исполнить код, заданный строкой (string).