Ю3.2

Задача: Периодические функции. Утверждается, что функция [latex]y = f\left ( x \right)[/latex] периодическая с периодом  [latex]T[/latex]. Проверить это численно, вычислив функцию с постоянным шагом на отрезке [latex]\left [ 0,5T \right ][/latex]. Учесть погрешность вычислений и возможные точки разрыва функции. Проверить на примере функций:
[latex]y=\sin^{2}x[/latex],     [latex]y=\tan x[/latex]           [latex]\left (T=\pi\right)[/latex];
[latex]y=\frac{1}{x}\cdot \sin x[/latex]              [latex]\left (T=2\pi\right)[/latex]

Решение:

Результаты:

 

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

Исходя из определения периодичности функции были получены данные сверху.

Следовательно можно сделать вывод, что функция     [latex]y=\tan x[/latex] и функция   [latex]y=\sin^{2}x[/latex]   периодичны, а функция  [latex]y=\frac{1}{x}\cdot \sin x[/latex] не периодична.

Графики подтверждают результаты расчетов:

y = sin(x)/x

[latex]y = \frac{\sin(x)}{x}[/latex]

y = sin^2 (x)

y = sin^2 (x)

y = tg(x)

y = tg(x)

 

Ссылка на код.

Решение на Java:

 

 

Денисова Ольга
Денисова Ольга

Latest posts by Денисова Ольга (see all)

8 thoughts on “Ю3.2

  1. — Иллюстрации крошечные, разглядеть ничего нельзя. При вставке на сайт автоматически создаётся изображение небольшого размере по нажатию на которое показывается полный размер. Если переделка займёт много времени, то оставляйте как есть.
    — Подписи к рисункам не всегда соответствуют изображению.
    — По графику y = sin(x)/x. Wolframalpha может себе позволить нарисовать значение этой функции в точке 0, а Вам такое не простят 🙂
    int VERY_LARGE_NUMBER = 999999999999 выходит за пределы допустимого целого числа. Т.е. Вы задали -727379969. Тем более нет смысла использовать это в функции, которая возвращает double. Если очень хочется вернуть бесконечность, то нужно написать так numeric_limits<double>::infinity( ). Только нужно подключить #include <limits>
    — С вычислением тангенса Вы что-то перемудрили. Функция из математической библиотеки отлично справляется с поставленной задачей, а Вашt return atan2(x,0); совсем не то делает.
    — Нет выводов о периодичности или не периодичности функций.
    — Почему только 5 точек? Сказано «вычислив функцию с постоянным шагом» и задан интервал от нуля до пяти предполагаемых периодов. Не сказано, что 5 точек.

  2. Формально, Вы не выполнили условие задачи. Не проверили периодичность и не прошли с постоянным шагом от 0 до 5Т. Понятно почему. Не всякий шаг подойдёт — нужно чтобы период составлял целое число шагов. Иначе нельзя проверить периодичность. Т.е. я готов принять, что Вы с постоянным шагом проходите только период, а остальные точки получаете добавлением одного, двух, трёх и четырёх периодов. Но Вы проходите только часть точек. И даже не печатаете каких именно. Печатаете только значения функций, не указывая от какого аргумента.
    И самое главное — Вы ничего не проверяете с учётом погрешности вычислений. Просто печатаете, а проверять будет человек, просматривая результаты.

    Попробуем сформулировать (близко к Вашему подходу) то, что нужно делать.
    1. Ввести шаг.
    2. Ввести допустимую погрешность (величину отклонения значений в пределах которого они считаются одинаковыми).
    3. Для каждой из трёх функций выполнить отдельно следующий пункт.
    4. Циклически в пределах периода вычислять значения функции в точках х с введенным шагом и сравнивать со значением в точках х+Т, х+2Т, х+3Т, х+4Т. Если значения отличаются более чем на допустимую погрешность то вывести «функция непериодическая» и перейти к следующей функции из п.3.
    5. Если цикл п.4 закончился, не обнаружив несовпадения, то вывести «функция периодическая» и перейти к следующей функции из п.3.

    • Я переписала программу, добавив те пункты, которые вы описали.
      (ввела шаг, погрешность, вывод угла и значения функции в разных точках)