Задания для самостоятельного выполнения
- Сложность:
- Rare
- Напишите программу по варианту, используя оператор цикла
while
(нечётные варианты) илиdo while
(чётные варианты). - Напишите программу, используя оператор цикла
for
. - Постройте график с использованием
gnuplot
. - Составьте блок-схемы.
- Оформите отчёт в
README.md
. Отчёт должен содержать:- Задание
- Описание проделанной работы
- Скриншоты результатов
- Блок-схемы
- График функции
- Ссылки на используемые материалы
- Сложность:
- Medium
- Используйте
gnuplot
напрямую из вашей программы, минуя файлы и перенаправление вывода. - Реализуйте анимацию построения графика.
- Сохраните анимированный график в формате
gif
.
- Сложность:
- Well-done
- Самостоятельно реализуйте построение графика с использованием любой графической библиотеки (sdl, raylib, opengl и т.д.)
Требования и ограничения
Программа должна выводить на экран таблицу вида:
0.000000 0.123456
0.100000 1.234567
0.200000 2.345678
...
1.000000 3.456789
Шаг \( h \) изменения аргумента \( x \) необходимо ввести с клавиатуры. Программа должна корректно выводить точки для любого положительного значения \( h \).
Указания по выполнению работы
Для использования математических функций в программу необходимо включить заголовочный файл <math.h>
, содержащий прототипы математических функций и макроопределения констант. Кроме того, при компиляции программы нужно указать ключ -lm
для подключения соответствующей библиотеки.
Математическая функция | Функция в C |
---|---|
\( \sin x \) | sin(x) |
\( \cos x \) | cos(x) |
\( \tg x \) | tan(x) |
\( \arcsin x \) | asin(x) |
\( \arccos x \) | acos(x) |
\( \arctg x \) | atan(x) |
\( \ln x \) | log(x) |
\( \lg x \) | log10(x) |
\( |x| \) | fabs(x) |
\( \sqrt x \) | sqrt(x) |
\( x^y \) | pow(x, y) |
\( e^x \) | exp(x) |
\( \operatorname{sgn} x \) | отсутствует |
Работа с gnuplot
Когда вы уже написали программу, выводящую на экран таблицу, выполните следующее:
./prog > my_graph.txt
Здесь prog
- это исполняемый файл вашей программы, my_graph.txt
- файл, куда она будет осуществлять вывод вместо терминала.
Теперь создайте файл plot.gpi
со следующим содержимым:
#!/usr/bin/env -S gnuplot -persist
# set terminal png enhanced
# set output "my_graph.png"
set xlabel "x"
set ylabel "f(x)"
set grid
set title "График функции f(x)"
plot "my_graph.txt" with lines title "f(x)"
Выполните команду chmod +x plot.gpi
. Теперь строить график можно с помощью команды:
./plot.gpi
Теперь можно сохранить файл с графиком вручную с помощью кнопки в появившемся окне, или автоматически - раскомментировав вторую и третью строку в скрипте.
Для справки
- Статья “Gnuplot и с чем его едят” на Хабре
- Справка по синтаксису Latex
- Writing mathematical expressions
Варианты заданий
Вывести таблицу значений и построить график функции с заданным шагом:
- \( f(x) = \begin{cases} \cos(x+x^3), & 0 \le x \le 1; \\ e^{-x^2} - x^2 + 2x, & 1 \lt x \le 2. \end{cases} \)
- \( f(x) = \begin{cases} e^{\sin x}, & 0 \le x \le \frac{1}{4}; \\ e^x - \frac{1}{\sqrt{x}}, & \frac{1}{4} \lt x \le \frac{1}{2}. \end{cases} \)
- \( f(x) = \begin{cases} \cos(x)e^{-x^2}, & 0 \le x \le 1; \\ \ln(x+1) - \sqrt{4-x^2}, & 1 \lt x \le 2. \end{cases} \)
- \( f(x) = \begin{cases} \sqrt{x+1} - \sqrt{x} - \frac{1}{2}, & 0 \le x \le 1; \\ e^{-x-\frac{1}{x}}, & 1 \lt x \le 2. \end{cases} \)
- \( f(x) = \begin{cases} 2^x - 2 + x^2, & 0 \le x \le 1.5; \\ \sqrt{x}e^{-x^2}, & 1.5 \lt x \le 3. \end{cases} \)
- \( f(x) = \begin{cases} 8x^3 \cos x, & 0 \le x \le 1; \\ \ln (1 + \sqrt{x}) - \cos x, & 1 \lt x \le 2. \end{cases} \)
- \( f(x) = \begin{cases} e^{-2\sin x}, & -1 \le x \le 1; \\ x^2 - \ctg x, & 1 \lt x \le 2. \end{cases} \)
- \( f(x) = \begin{cases} \frac{1}{1+25x^2}, & 0 \le x \le 0,6; \\ (x + 2x^4) \sin x^2, & 0.6 \lt x \le 1.6. \end{cases} \)
- \( f(x) = \begin{cases} (x^2 - 2x^3) \cos x^2, & -1.5 \le x \le 0; \\ e^{\sin 2x}, & 0 \lt x \le 1.5. \end{cases} \)
- \( f(x) = \begin{cases} -\cos e^x, & 0 \le x \le 1; \\ \ln (2x + \sin x^2), & 1 \lt x \le 2. \end{cases} \)
- \( f(x) = \begin{cases} x^2 \arctg x, & 0 \le x \le 1; \\ \sin \frac{1}{x^2}, & 1 \lt x \le 2. \end{cases} \)
- \( f(x) = \begin{cases} x^2 \sin (\sqrt[3]{x} - 3), & -2 \le x \le 0; \\ \sqrt{x} \cos 2x, & 0 \lt x \le 1. \end{cases} \)