АПД судя по комментариям, эта статья нуждается в некоторой мотивировке. Что именно и зачем мы делаем. Коротко говоря, производную все, кто её как-то запоминает (а запоминают немногие) помнят в дальнейшем как "другой график". Это "ещё одна функция", которая описывает исходную. Мы никогда почти не интересуемся производной поточечно. А между тем производная изначально - не столько отдельная функция, сколько характеристика исходного графика в разных точках. Именно эту привязку мы и проявим в статье. КОНЕЦ АПД

ВТОРОЙ АПД о касательной как пределе секущих и другой возможной питонизации темы см. в длинном комментарии под статьёй вот тут: https://habr.com/ru/post/599051/#comment_23894499 . КОНЕЦ ВТОРОГО АПД

Начнём с повторения математических терминов и нескольких опций питона. В питоне мы будем использовать черепашку, а также модуль математических функций math. От черепашки понадобятся:

  • shape(), color(), speed(), radians() - функции общей настройки

  • xcor(), ycor() - функции, сообщающие положение

  • goto() - для перемещения черепашки в точку

  • setheading() - для изменения направления головы черепашки

  • done() - функция замораживания экрана (нужна при работе в трезвом редакторе вроде VSCode. Если вы пишете в IDLE, она не нужна)

Кроме того, заметим, что поле у черепашки в пикселях. Если она побежит по параболе - убежит моментально за край листка. Так что введём какую-нибудь единицу UNIT = 100 пикселей, например, ну и вот это вот всё отнормируем в наших юнитах.

Из модуля math возьмём функцию atan() - арктангенс. Она возвращает радианную меру угла, не градусы. Дальше мы либо там же берём число pi - константу модуля math, тихо на неё делим, умножив потом на 180, либо мы повторяем, что значит "радианная мера угла", вернее - проходим её. Ваши ученики, скорее всего, про радианы не слышали.

А "производная" в данном случае - "тангенс угла наклона касательной", вот, что нам требуется. Очень похоже на канцелярит, "нанизывание родительных падежей" - "зам. главы отдела контроля качества цеха упаковки (и др.)". Будем эту конструкцию разбирать с конца:

  • есть у нас график функции y = f(x)

  • есть на нём точка, (a, f(a))

  • если туда пришла черепаха, если она (черепаха) бежит по графику, ей в этой точке надо смотреть... по касательной к графику, так что нам требуется уравнение этой касательной. Если последнее записать как y = kx+b, то это k как раз и есть производная: k = f'(a)

  • функция перенаправления головы черепашки умеет в углы, не в прямые. Чтобы сказать "посмотри в направлении этой прямой" мы должны передать не прямую, а "угол между прямой, по которой надо смотреть, и лучом Ox". И если k в пункте выше - тангенс того угла, тут нам понадобится арктангенс k: atan(f'(a))

Получим что-то такое вот для параболы:

from turtle import Turtle, done
from math import atan

UNIT = 100

alice = Turtle()
alice.color('green')
alice.shape('turtle')
alice.speed(1)
alice.radians()

for step in range(2 * UNIT):
    x = alice.xcor() + 1
    y = x**2 / UNIT
    alice.goto(int(x), int(y))
    k = 2*x / UNIT
    alpha = atan(k)
    alice.setheading(alpha)

done()

Что-то подобное я уже делала с несколькими +/- старшеклассниками. В целом неплохо: это можно прочесть, и код работает (проверьте сами). В чём тут проблемы:

  • не вполне ясно, где мы тут делим на юнит, как выбраны эти места

  • что нам придётся делать с юнитами, когда мы заменим график

  • можно ли всю картинку сдвинуть из точки (0, 0)?

  • как пересадить это в браузер с джаваскриптом и стилями?

В браузере мы можем создать картинку с помощью трёх div-ов: внешний со срезанными углами и глазками (это два вложенных div). Глазки куда-нибудь смещены, надо их перенаправить по курсу. Перемещать можно с помощью javascript:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body {
            background: gray;
        }
        .beast {
            position: absolute;
            background: green;
            width: 20px;
            height: 20px;
            border-radius: 50%;
        }
        .eye {
            background: white;
            width: 5px;
            height: 5px;
            border-radius: 2px;
            transform: translateY(5px);
        }
    </style>
</head>
<body>
    <div class="beast">
        <div class="eye"></div>
        <div class="eye"></div>
    </div>

    <script>
        const UNIT = 100
        
        const beast = document.getElementsByClassName('beast')[0]
        let x = 0
        let y = 0
        let k = 0
        let alpha = 0

        let id = setInterval(
            function() {
                x++
                y = x * x / UNIT
                beast.style.left = x + 'px'
                beast.style.top = y + 'px'
                k = 2 * x / UNIT
                alpha = Math.atan(k) * 180 / Math.PI + 180
                beast.style.transform = 'rotate(' + alpha + 'deg)'
                if (x > 2 * UNIT) clearInterval(id)
            }, 50
        )
    </script>
</body>
</html>

С этого места код хочется разделить на файлы. Собственно, и питоновский код тоже хочется, и мы делили его: файл с основной логикой + файл отрисовка + файл калькулятор. В браузере, соответственно, плюс ещё два файла: разметка и стили.

Бонусом станет возможность на этом же материале пройти наследование. Или даже уже интерфейсы. Вы пишете интерфейс для воплощения функции и производной. Функционал отрисовки юзает интерфейс. А ваши классы с разными калькуляторами обсчитывают разные функции.

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

main.py

from painter import Painter
from calculators.calculatorSquare import CalculatorSquare

painter = Painter()
calculator = CalculatorSquare()

for x in range(200):
    calculator.nextStep()
    y = calculator.getY()
    alpha = calculator.getAngleInRadians()
    painter.showState(x, y, alpha)

painter.freeze()

painter.py

class Painter:

    def __init__(self):
        from turtle import Turtle, Screen
        self.__beast = Turtle()
        self.__beast.shape('turtle')
        self.__beast.speed(10)
        self.__beast.radians()

    def showState(self, x, y, alpha):
        self.__beast.goto(x,y)
        self.__beast.setheading(alpha)

    def freeze(self):
        from turtle import done
        done()

и папка calculators с файлами calculator.py

from math import atan

class Calculator:

    def __init__(self):
        self._UNIT = 100
        self._x = 0
        self._y = 0
        self._alpha = 0

    def nextStep(self):
        self._x += 1

    def getY(self) -> float:
        pass

    def getDerivative(self) -> float:
        pass

    def getAngleInRadians(self) -> float:
        return atan(self.getDerivative())

и calculatorSquare.py

from .calculator import Calculator

class CalculatorSquare(Calculator):

    def getY(self):
        return self._x ** 2 / self._UNIT  

    def getDerivative(self):
        return self._x * 2 / self._UNIT

Комментарии (61)


  1. unsignedchar
    01.01.2022 21:53
    +5

    Я думал, что тут будет про численное дифференцирование.. А тут я не понял о чём текст.


    1. MaryRabinovich Автор
      01.01.2022 22:10
      -6

      что именно вы называете "численным дифференцированием"?

      Мы, безусловно, проходим саму производную как "коэффициент касательной", которая получается как предел секущих. И для начала выводим формулу для касательной как для такого предела. Далее, непосредственно в коде, мы уже пользуемся итоговой формулой, выведенной заранее.

      Проблема с определением производных на математике в том, что производная становится как бы отдельной функцией. См. на ЕГЭ типовой №6 - дан, например, график производной, и надо что-то из этого сказать про исходную функцию. Если мы изначально не очень-то видим связь (что "производная" - это расположение, грубо говоря, спички на графике как на горке), то №6 (реально-то очень простой) становится неподъёмным.


      1. unsignedchar
        01.01.2022 22:21
        +2

        что именно вы называете "численным дифференцированием"?

        Гуглится ;)


        1. MaryRabinovich Автор
          01.01.2022 22:25
          -11

          подождите, что вы называете этим словом - не гуглится.

          Вы пишете претензию к моей статье. Я, призёр последней Всесоюзной олимпиады школьников по математике, прости господи, пытаюсь понять, что именно вас не устроило. Вы меня шлёте в гугл. Но в гугле про вас и про ваши не оправдавшиеся ожидания нету ни слова.


          1. unsignedchar
            01.01.2022 22:42
            +2

            Может у вас Гугл сломался, бывает ;) Я специально выделил эти 2 слова - и Гугл нашел мне статью из Википедии.

            что именно вас не устроило.

            Нарисовать график функции, заданной формулой - это интересно, допустим. В чем интересность рисования второго графика, тоже заданной функцией?


            1. MaryRabinovich Автор
              01.01.2022 22:58

              Так там второго и нету. В том-то и дело: вы в рамках ожидания "будет численное дифференцирование" ждали два графика. Двух в статье нету, но вы их увидели. И вы в претензии.

              Что же в статье есть на самом деле (перечитайте, пожалуйста, и убедитесь):

              • есть черепашка, бегущая вдоль графика (и на питоне она оставляет след. В браузере не оставляет)

              • если мы просто будем её так сдвигать, она будет неестественной: будет как будто боком в итоге двигаться. Нос постоянно направлен вправо, но в целом она движется по параболе, например

              • чтобы исправить эту вот неестественность, перенаправим нос по касательной. В каждой точке касательная будет новой. И мы получим бегущую черепашку, причём бегущую носом вперёд, всё время - даже при том, что функцию можно менять (и, разумеется, параллельно менять формулу производной)


              1. unsignedchar
                02.01.2022 03:06
                +3

                Да не в претензии я ;) я сначала не понимал, а потом как понял, чего там происходит! Рисование графика черепашкой, ага. Но при чем тут производная, если она уже найдена в таблице и закодирована в функции getDerivative. Если, конечно, название функции соответствует тому что она делает ;)

                Короче, если статья должна что-то объяснять - тут мимо.


              1. Vladivo
                02.01.2022 21:47

                Идея, безусловно, очень интересная, но не могу не согласиться с коллегой в плане иллюстраций и численного дифференцирования. Мне кажется, что используя конечные разности и постепенно уменьшая дельту, можно вызвать нехилый вау-эффект у любопытного восьмиклассника, когда черепашка как бы сама по себе вдруг начинает смотреть в правильном направлении, ползя по графику гладкой функции. И пока школьник будет в трансе от увиденного чуда, можно задвинуть ему бесконечно малую величину с пределами и даже интегрирование на прямоугольниках показать.


                1. MaryRabinovich Автор
                  03.01.2022 18:50
                  -2

                  С одной стороны, я думала вчера написать что-нибудь уточняющее, уже по мотивам обсуждения. Но в данный момент у меня настолько отрицательная карма, что я могу разве что комментировать тут раз в час.

                  Что вполне удивительно, поскольку эту статью положили в закладки уже 8 человек. То есть оценка статьи -18, при этом 8 человек положили в закладки. Пока что сам этот факт меня сильно больше цепляет - как факт из социологии хабра. Цепляет больше, чем вопрос о том, как лучше развить эту статью.


                  1. unsignedchar
                    03.01.2022 23:16
                    +2

                    8 человек положили в закладки

                    Не уверен, что этим нужно гордиться. Вы же не знаете, зачем они это сделали ;)

                    Но статью лучше бы переписать.

                    Чтобы просматривались такие элементы, как вступление, завязка, кульминация, развязка, заключение, например.


                  1. lair
                    03.01.2022 23:53
                    +1

                    Что вполне удивительно, поскольку эту статью положили в закладки уже 8 человек. То есть оценка статьи -18, при этом 8 человек положили в закладки.

                    Знаете, есть люди, которые читают от статьи какой-то кусочек, думают, "о, клево, потом разберусь" — и добавляют в закладки.


                    А есть люди, которые читают до конца, говорят "блин, фигня какая-то" — и ставят минус.


                    И ничего удивительного ни в тех, ни в других нет.


                    А если посмотреть, что оценка статьи в -19 состоит из +5 и -24, то поводов для удивления по поводу восьми закладок не остается вовсе.


            1. MaryRabinovich Автор
              01.01.2022 23:37
              -9

              Добавлю два слова, так сказать, по процессу.

              Вы написали резкие комментарии, криво прочтя статью. И получили +2 балла в карму за эту отповедь.

              Я, попытавшись выяснить, что вам не так ("не так" оказалось связанным с вашими представлениями о прекрасном: что производная - это отдельный график, а значит в статье два графика, ну и кому это надо и др.), получила три минуса.

              Будучи относительным новичком на хабре, имея исходно карму и рейтинг в районе нуля, я из-за этого ушла с ними ниже нуля и должна выжидать между комментариями, чтобы ответить. Мне пишут "вы можете отправлять комментарии не чаще 1 раза за 5 минут".

              Отсюда вопрос: верно ли я понимала уровень хабра.

              Несколько разочарована, если что.


              1. unsignedchar
                02.01.2022 13:22
                +1

                Вы написали резкие комментарии, криво прочтя статью.

                Какая статья - такие комментарии. Если бы я в детстве не слышал про язык Лого, где надо управлять черепашкой - я бы вообще совсем ничего не понял. Какая то задача, вроде бы связанная с математикой и графикой (в заголовке так написано), но без формул и графиков. И код на python в oop-style, который нужно запустить, чтобы эти графики увидеть. Сорян, читаю с устройства, где нет возможности его запускать. И простыня HTML+CSS.

                Сама идея забавная - рисование в полярных координатах с движущейся точкой отсчёта, но при чем тут именно производная?

                И получили +2 балла в карму

                Нет, не за это. там и так было немного >0.


          1. DaneSoul
            01.01.2022 22:59
            +9

            Я, призёр последней Всесоюзной олимпиады школьников по математике, прости господи, пытаюсь понять, что именно вас не устроило.
            Ну так и напишите подробную развернутую статью от которой математические проблемы стали бы понятней остальным. Сейчас если убрать програмный код и верстку, то текста статьи вообще почти нет.
            У вас статья о визуализации без единой иллюстрации — это как вообще?


            1. MaryRabinovich Автор
              01.01.2022 23:17
              -13

              Скопируйте мышкой в IDLE (или в текстовый файл, если мы про веб-версию) и запустите. В чём сложность? Будет визуализация, причём движущаяся. Фишка-то именно в том, чтобы это увидеть в движении.

              Не сомневаюсь, что вы это всё умеете: в подписи же у вас и питон, и веб.


              1. DaneSoul
                01.01.2022 23:56
                +7

                Фишка-то именно в том, чтобы это увидеть в движении.
                Ну так и сделайте простой gif c анимацией.
                В конце концов, сделайте он-лайн презентацию в каком-то он-лайн редакторе и приложите ссылку, чтобы это могли увидеть все, а не только те кто работает с Python.
                Не сомневаюсь, что вы это всё умеете: в подписи же у вас и питон, и веб.
                Да я то и код сам написать могу, но зачем в таком случае мне Ваша статья?


                1. MaryRabinovich Автор
                  02.01.2022 00:11
                  -6

                  Ну как бы раз вы тут комментируете, значит, открыли её.

                  Вопрос: а зачем? Зачем вы открыли эту статью. Вопрос абсолютно не ради наезда, а содержательный. Если вы кликнули на "открыть", значит, была мотивация. Вопрос, какая.

                  Вы для чего-то сейчас высказываетесь за непитонистов. Непитонисты мол очень нуждаются в гифках.

                  Ну так когда я читаю статьи по чужим языкам, я не нуждаюсь в картинках, я ищу сниппеты кода. Особенно радуюсь кратким. То есть особенно радуюсь тем, которые я могу запустить - сама. И поиграться с ними, менять ту, эту строчку, смотреть, что будет.

                  Я сожалею, что вам эта статья не зашла. И сожалею, что вы на неё тратите время (тут, в частности, в комментариях). Но это ваш выбор.


                  1. DaneSoul
                    02.01.2022 00:23
                    +2

                    Вопрос: а зачем? Зачем вы открыли эту статью. Вопрос абсолютно не ради наезда, а содержательный. Если вы кликнули на «открыть», значит, была мотивация. Вопрос, какая.
                    Открыл, потому что хотел расширить свои не очень высокие математически познания, но увидев что ни подробного текста ни иллюстраций в статье нет — потерял интерес.
                    Ну так когда я читаю статьи по чужим языкам, я не нуждаюсь в картинках, я ищу сниппеты кода.
                    А я ищу прежде всего теорию, объяснения и иллюстрации (таблицы, схему, графики и т.п.), потому как примеров кода в интернете море, а вот грамотных объяснений почему делается именно так и какие тут подводные камни — мало.
                    Сниппеты кода — это тематика сайта StackOverflow, а у Хабра основная фишка длинные содержательные статьи.
                    Я сожалею, что вам эта статья не зашла.
                    Понимаете, я комментирую не потому, что хочу негативом покидаться или самоутвердится за чужой счет. А потому, что хочу подсказать что исправить на будущее, чтобы статьи хорошо принимались именно на этом ресурсе.


                    1. MaryRabinovich Автор
                      02.01.2022 00:56
                      +2

                      Понятно. Тогда я тут добавлю про сущностный смысл производной, статью уже трогать не буду... уже просто поздно очень. Мало ли, что я там наковыряю в час ночи.

                      Есть изначально график функции y = f(x), он состоит из точек вида (x; f(x)), это пока масло масляное. Ну просто "график" - это "все точки плоскости, такие, что их вторая координата связана с первой вот этим вот уравнением, y = f(x)".

                      Допустим, это - парабола (в сниппете внутри статьи она как раз). То есть, все точки вида (x; x**2).

                      Дальше.

                      Как чисто алгебраически провести касательную к параболе такого вида в точке, допустим, (1; 1)? Или (2; 4)?

                      Мы очень хитро поступим: сначала мы проведём секущую (этого в сниппетах нету, это теория, предварительная). Что означает "секущая" для параболы? Ну как, примерно всё то же, что для окружности (в школе обычно термин "секущая" юзают именно на окружностях). Это такой отрезок, от кривой до кривой. От одной точки кривой до другой её точки. От точки графика до другой его точки.

                      Скажем, отрезок от (1; 1) до (1.5; 2.25) - это секущая: оба её конца лежат на параболе.

                      Или отрезок от (1; 1) до (1.1; 1.21) - это тоже секущая.

                      Если вы сделаете двух черепашек, одна будет в (1; 1), а другая к ней побежит навстречу вот так, если вы чисто векторно развернёте голову первой черепашки по направлению ко второй, вы увидите, что первая поворачивается, поворачивается, поворачивается и постепенно выстраивается по касательной - где сидела.

                      Как чисто векторно повернуть одну черепашку в сторону второй черепашки? Надо взять вектор от первой и до второй, ну и... взять тангенс его наклона, тот самый. Если мы делим вторую координату вектора на его первую координату, мы получаем тангенс угла наклона вектора относительно положительной полуоси Ох. Тут пока нет никаких производных - мы пока не пытаемся повернуть первую черепашку по касательной к графику. Пока что цель - повернуть её мордой ко второй черепашке. То есть, вдоль соединяющей их секущей.

                      Если мы знаем тангенс наклона этого вектора, мы вычисляем "угол, на который надо развернуть первую черепашку" как atan(y/x), где (x,y) - вектор от первой черепашки до второй. Угол atan отдаёт в радианах, поэтому первую черепашку (вторую-то мы не разворачиваем... вообще, исходно лучше бы превратить эту вторую в мелкую точку, чтобы глаза не мозолила) мы для начала просим брать угол в радианах, не в градусах. Ну или где-то по ходу мы делаем градусы из радианной меры (делим на пи, умножаем на 180).

                      Если вы первую черепашку сдвинете и повторите пробег второй - уже к новой точке - вы и тут, снова, увидите, что первая поворачивается по касательной. Это новая точка, и новая, другая, касательная.

                      То есть, мы можем считать касательные пределом секущих.

                      Дальше мы прямо ручками смотрим, что будет при вычислениях.

                      Вот, например, есть одна черепашка, сидит она в точке (1; 1).

                      Вторая сидит в точке, сдвинутой по иксу на h. График у нас, напомним, y = x**2 (наш первый пример). Значит, когда у нас x = 1+h, мы получаем y = (1+h)**2 на втором координате.

                      То есть, наша вторая зверюга, второй то есть конец секущей, это

                      ( 1+h; (1+h)**2 )

                      Раскроем скобки в записи второй координаты, получим

                      ( 1+h; 1 + 2*h + h**2 )

                      Тут, как мы помним, нам нужен вектор секущей - по направлению от первой точки (1;1) ко второй, сдвинутой.

                      Координаты вектора будут разностями координат этих точек:

                      ( 1+h - 1; 1 + 2*h + h**2 - 1 )

                      То есть, нам нужен вектор

                      ( h; 2*h + h**2 )

                      А от него нужен "тангенс угла наклона" - его вот. То есть, мы делим игрековую координату вектора на иксовую, получаем 2 + h, тут всё сокращается (так вообще всегда в многочленах - всё сокращается).

                      И первую черепашку мы направляем по atan(2 + h) через setheading().

                      Что же получится, когда h устремится к нулю? Ну, черепашка свернётся на направление (1; 2) - это как раз касательный вектор к графику в нашей точке (1; 1).

                      Если бы мы начинали с точки (2;4), что было бы?

                      Ну, у второй черепашки была бы позиция (2 + h; (2+h)**2 ).

                      Вектор от первой и до второй имел бы координаты

                      ( 2+h - 2; (2+h)**2 - 2**2), то есть (h; 4*h + h**2).

                      Дальше мы делим вторую координату вектора на его первую координату, и получаем в частном 4 + h. Перенаправим голову первой черепашки через setheading(), передав ей в параметры atan(4+h). Тут мы тоже увидим, что с уменьшением h наша первая черепашка выстраивается по касательной в точке (2;4), это теперь направление (1;4).

                      Ну вот.

                      Короче говоря, "производная" - это вот эта вот самая касательная. Вернее, какое-то там число, с нею связанное ("тангенс угла наклона касательной"). Которое есть предел секущих - если второй конец нашей секущей движется в сторону первой.

                      Наверно, так тоже можно бы было построить статью: именно этот предел секущих воплотить в коде. Если мне тут окончательно не обрушат рейтинг (сейчас я, наверное, больше ничо опубликовать не смогу), может, вторую так и напишу. Ну и там, да, там можно проиллюстрировать "тангенс угла наклона" вектора секущей, и потом касательной.


                  1. Andy_U
                    02.01.2022 03:57
                    +4

                    Вопрос: а зачем? Зачем вы открыли эту статью. Вопрос абсолютно не ради наезда, а содержательный. Если вы кликнули на "открыть", значит, была мотивация. Вопрос, какая.

                    Название было выбрано весьма удачно...


                1. MaryRabinovich Автор
                  02.01.2022 00:22
                  -1

                  Кстати, сейчас заглянула на ваш профайл - вы хорошо иллюстрируете ваши тексты. Но.

                  Вы же их пишете, теоретически, как туториалы для новичков - как минимум, для новичков в узкой области.

                  Я, напротив, рассчитываю в этой статье на людей, которые в целом-то знают и производную, и базовый питон. Может быть, не использовали черепашку, но что-то знают. А черепашка для них - что-то очень доступное.

                  То есть, мне кажется, что на хабре примерно все производную знают. Возможно, я заблуждаюсь. Питон на уровне старшеклассников знают многие.

                  Скажем, это родители старшеклассников, программирующие на работе - на чём угодно. И временами думающие, что бы такое забацать с ребёнком вместе. Чтобы и развивающе, и прикольно.

                  Или это преподаватели математики и программирования. В школах типичные языки - питон, паскаль, С с разными закорючками. То есть, питон для школьника - выбор очень естественный, он в программе.

                  То есть, в статье расчёт на людей, которым она скорее для вдохновения, а не про новый язык. Не новый, опять же, с нуля материал в математике.

                  Мне кажется, не стоит подходить к популяризаторской статье и ко взрослой документации с равными мерками.


                  1. lair
                    02.01.2022 11:14
                    +4

                    Я, напротив, рассчитываю в этой статье на людей, которые в целом-то знают и производную, и базовый питон.

                    Я вот "в целом" знаю и производную, и базовый питон.


                    А черепашка для них — что-то очень доступное.

                    … а вот про "черепашку" слышу первый раз.


                    Мне кажется, не стоит подходить к популяризаторской статье и ко взрослой документации с равными мерками.

                    Проблема вашей статьи в том, что не понятно, кому же она нужна.


              1. PapaKarlo787
                03.01.2022 13:57

                Ну это смешно, не данный комментатор же делал статью, а вы прямо предлагаете, чтобы он сам её в каком то смысле доделал, если ему не нравится...

                На счёт статьи, я согласен с большинством проблем, что раньше были озвучены - много теста, мало мяса, не совсем понятно о чем статья. Слишком много кода, пояснения по большей части к этому коду, почти ни слова по теме.

                Вам не стоит обижаться, а лучше принять к сведению и писать качественнее в будущем :)


      1. mayorovp
        01.01.2022 22:21

        Проблема с определением производных на математике в том, что производная становится как бы отдельной функцией.

        Но ведь производная — и есть отдельная функция!


        1. MaryRabinovich Автор
          01.01.2022 22:28
          -3

          безусловно. Вернее и да, и нет.

          Если мы интересуемся производной как отдельной функцией - она отдельная (масло масляное, ну да).

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


          1. Tiriet
            02.01.2022 16:02
            +2

            У Вас какое-то очень своеобразное и образное восприятие производной. Вы привязываете производную к графику функции- но ведь график функции- это один из способов визуализации, не более, не всякие функции имеют производные, но при этом могут иметь график (ф-я Вейерштрасса, например), или любая разрывная функция- график есть, касательные есть, секущие есть, а производной в точке разрыва- нет. Есть функции нескольких аргументов- у них тоже есть производные, но ни графиков, ни касательных с секущими- нет. Если это у Вас такое преподавание- то за такое надо ругать нехорошими словами, потому что смысл и содержание подменяется визуализацией и словоблудием. Пока это "школьная программа" для нематематиков- такое может быть и допустимо, но если это для "знакомых с питоном и производной"- то уже нет. Если это популяризаторская статья- то тоже не очень: куча кода с магическими константами и плохими именами (_UNIT = 100- это, кмк, пример плохого именования), вроде как код что-то там должен рисовать, но что именно- догадайся сам- такое отпугивает, а не привлекает.


  1. GeMir
    01.01.2022 21:56
    +2

    несколькими +/- старшеклассниками

    «Плюс/минус старшеклассники» — это, простите, кто?

    Зачем нужен Python+HTML+CSS для того, чтобы «увидеть» первую производную, если достаточно GeoGebra?


    1. MaryRabinovich Автор
      01.01.2022 22:03

      от восьмого класса и выше.

      Что касается GeoGebra - она же сама строит график. С ней вам не нужно вникать в это самое "тангенс угла наклона касательной".

      ЗЫ собственно, если на GeoGebra можно по графику пустить зверя и посмотреть направление его носа, пожалуйста, напишите, как там это сделать.


      1. GeMir
        01.01.2022 22:05
        +1

        Я 19 лет назад закончил среднюю школу в России и как-то совсем не припомню производной в программе 8 класса.


        1. MaryRabinovich Автор
          01.01.2022 22:20

          её там и нет. Она в 11. И абсолютное большинство в 11 проходит мимо.

          Тут я показываю, как пройти её, в том числе, с восьмиклассником и закрепить материал. Или как человеку в районе 10-11 класса (ученик зарубежный, поэтому точного соответствия с нашими выпускными нет) лишний раз предъявить её в действии. И увидеть литсо - реальное удивление и... ну не восторг, пожалуй, но что-то вполне похожее.


          1. Tiriet
            02.01.2022 16:07
            +2

            Тут я показываю, как пройти её, в том числе, с восьмиклассником и закрепить материал

            А потом он с этим "закреплением" придет на мехмат, и случится грустное- ему начнут впаривать определения и накидывать за каждое неверное слово, а у него- производная через черепашку на графике, а не предел отношения. А когда функции двух переменных пойдут или не приведи- теория функций комплексного переменного (где и функция, и ее аргумент- комплекснозначные- и никаким тангенсом привычным там не пахнет, а тот тангенс, который там есть- это ваще абстракция с третьего уровня сумрака)- тут случится полный карачун и заворот неокрепшей детской психики.


  1. GeMir
    01.01.2022 22:35
    +2

    в том числе, с восьмиклассником

    Умеющим Python, HTML, CSS и заодно знающим, что есть такое арктангенс? Очень-очень специфический ученик 8 класса получается.

    реальное удивление и... ну не восторг

    Что мешает вызывать восторг десятком кликов в GeoGebra или ещё проще — на листочке бумаги с линейкой?

    Первая производная определена как наклон (m) тангенты к графику функции. Уравнение прямой (y = mx + b) тема 7-8 класса. Нахождение наклона (того самого m) при помощи «треугольника наклона» (Steigungsdreieck, не знаком русский термин) — тоже. Большинство десятиклассников (знаком лишь с немецкой программой) в состоянии «увидеть производную» без тригонометрии и заклинаний вида «self._x ** 2 / self._UNIT».


    1. MaryRabinovich Автор
      01.01.2022 22:44

      Ну, строго говоря в html и css умеют некоторые. Упомянутый в статье восьмиклассник - сын именно веб-программиста, так что мы, да, строили и на питоне, и джаваскриптом. Медленно, долго, и с удовольствием.

      Кучу всего прошла с ними под это дело. Тангенс как вещь для такой задачи - тоже вполне логична.

      Собственно, с восьмиклассником началось с его интереса к Unity - я предложила поковыряться в том, что нам даёт на выходе ощущение реализма. Unity и GeoGebra многое делают сами, уже под капотом. И при использовании таких инструментов школьник рискует пройти мимо ценных вещей не осознав даже сам факт наличия таковых - что там что-то надо делать активно. Да, оно как-то встроено в хитрый движок. Но в другой-то не встроено.


      1. GeMir
        01.01.2022 22:50

        Но в другой-то не встроено.

        Именно поэтому — график, ручка и линейка.


        1. MaryRabinovich Автор
          01.01.2022 23:05

          Мне кажется, вы меня изобличаете в отсутствии предварительной стадии "график, ручка и линейка". Нет, разумеется. Мы, разумеется, для начала проходим вот это вот всё. Но, согласитесь, бумажка и ручка - это не то же самое для подростка (и даже для взрослых), чем... чем черепашка, бегущая по экрану, благодаря вашему коду.

          Ну правда же.

          Я будто не на хабре, а даже не знаю где, судя по возражениям.

          Разве вам самому не нравится, когда Оно Двигается? А вы точно знаете, как именно, почему, и сами вообще написали это, почти с нуля (ну то есть где-то уже железо или язык Питон, Питон писали не вы. Но это же здорово осознавать, разве нет?)


          1. GeMir
            01.01.2022 23:15
            +1

            чем черепашка

            Черепашка в 202x году? «Не смешите мои подковы».

            Вы упорно продолжаете «стрелять из пушки по воробьям» не замечая, что за «лесом» из применяемых вами технологий уже давно не видно «деревьев» простой связи «производная — это наклон тангенты». Это исходя из моего скромного педагогического опыта без всесосюзных олимпиад, конечно. Личное мнение, не более того.

            Так что да, вы не на хабре а в волшебной стране, в которой восторг 13-14-летних digital natives, рождённых со смартфоном в руке всё ещё вызывается черепашкой.


            1. MaryRabinovich Автор
              01.01.2022 23:51

              Производная - это наклон касательной. Так мы её проходим, мы для начала чертим секущие на бумажке, от точки (a, f(a)) до (a+h, f(a+h)), двигаем вторую точку к первой и переходим к пределу. По ходу мы обсуждаем, что значит "тангенс". Радуемся, что на многочленах всё сокращается, и предел можно прямо считать.

              Далее, поскольку это приятно, мы воплощаем в коде пройденное, в одном файле.

              Дальше, с особенно интересующимися, мы разделяем файл в духе MVC (этого термина я с ними не поминала). Дальше мы заодно проходим наследование.

              Включает ли ваш скромный педагогический опыт разделение с детьми файлов на несколько? Это, по-моему, бич школьного программирования: всё в один файлик валим, можно - в километровый. После чего в работе, уже по-взрослому, я попадаю на легаси код с 3000+ строчек в контроллере на ларавель (реальная цифра - все их, наверное, написали люди, родившиеся со смартфонами).


              1. GeMir
                02.01.2022 00:12
                +1

                По ходу мы обсуждаем, что значит "тангенс".

                Тригонометрия между делом. Очень интересный подход. Обратные функции как концепт — тоже «по ходу»?

                я попадаю на легаси код с 3000+ строчек в контроллере на ларавель

                Перестаньте, пожалуйста, уводить внимание от проблемы статьи — вы не сделали понятие производной нагляднее рисунка на бумаге, использовав три языка и побеспокоившись о том, чтобы код не «валили в один файлик».


                1. MaryRabinovich Автор
                  02.01.2022 01:39

                  Да. И эту статью уже двое добавили себе в закладки, представьте себе.

                  Проверила. Уже трое.

                  Конечно, всё между делом, как вы это называете.

                  Я, правда, всё это называю иначе: "с практической мотивацией". Вот, например, нам нужно выставить голову черепашки в некоем направлении. Как мы такое сделаем, если мы уже знаем векторы? То есть, мы уже можем в декартовы координаты. Как перейти от декартовых... к чему именно?

                  Ну, к полярным. А что такое "полярные координаты"?.. И что вообще такое "координаты на плоскости"?..

                  Ну и т.п.

                  Я же не про "понятие производной", ну правда же. Я про "использование (понятия) производной как ингредиента в коде здесь и сейчас".


                  1. Tiriet
                    02.01.2022 16:39
                    +2

                    Статья называется "как увидеть производную", а не "как использовать производную", то есть, именно про понятие производной. Для призера математической олимпиады Вы слишком наплевательски относитесь к определениям терминов. Вероятно,это одна из причин, по которой Вам и накидывают.


              1. Tiriet
                02.01.2022 16:19
                +3

                Производная - это наклон касательной

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

                И зачем Вы выносите в отдельный файл с целым классом банальную простейшую функцию f(x) да еще и заворачиваете туда чудо-метод NextStep! Какие внутренние состояния есть у f(x), что ее потребовалось выносить в класс, что там инкапсулировать?


                1. mayorovp
                  02.01.2022 16:43
                  +1

                  И зачем Вы выносите в отдельный файл с целым классом банальную простейшую функцию f(x) да еще и заворачиваете туда чудо-метод NextStep! Какие внутренние состояния есть у f(x), что ее потребовалось выносить в класс, что там инкапсулировать?

                  Самое глупое, что даже саму функцию и её производную инкапсулировать-то и не получилось. Потому что оказались смешаны сама функция и её графическое представление (что выражено в том самом nextStep и делении на _UNIT)


  1. z0ic
    01.01.2022 22:36

    А где картинки ? Имхо современным детям больше подошел бы Unity или Godot, python это уже как бы не совсем то.


    1. MaryRabinovich Автор
      01.01.2022 22:49

      только что написала про Unity в другом комментарии - именно от него мы и начали с одним из ребят. Собственно, с остальными я всё это разбирала позже.

      Мне кажется, что сразу использовать хитрые штуки вредно. Это как сразу начать заказывать еду готовую, не убедившись, что сам можешь сделать яичницу или сварить картошку. Это, с одной стороны, удобно - быстро и вкусно. С другой, всегда есть вероятность, что вдруг однажды денег не хватит. Или не будет времени эту доставку ждать. Если, допустим, вы пишете на мелкой памяти, вы не потянете мощных движков, например.

      ЗЫ картинка вам будет, как только вы вот это вот скопируете в IDLE и там запустите. Потом поменяете пару строчек (саму функцию и, соответственно, формулу производной), и снова запустите. Будет картинка в движении, причём к разным функциям разная.


  1. Andy_U
    02.01.2022 01:20
    +1

    А "производная" в данном случае - "тангенс угла наклона касательной"

    Пусть по оси X - время в секундах, по оси Y - напряжение в вольтах. Ну, давайте, посчитайте угол наклона касательной, если dY/dX имеет размерность [v/s]?

    А между тем производная изначально - не столько отдельная функция, сколько характеристика исходного графика в разных точках. Именно эту привязку мы и проявим в статье.

    Выделение мое. И это пишет "призёр последней Всесоюзной олимпиады школьников по математике, прости господи"? Действительно, прости господи.


    1. MaryRabinovich Автор
      02.01.2022 01:31
      -7

      Вот смотрите. На вашем счету пока ни одной статьи, 800++ комментариев, а рейтинг лишь 0.1 . И карма всего 1.

      Это заставляет задуматься о качестве ваших комментариев. Чисто теоретически за 800 комментариев можно было иметь +800.

      Может быть, хоть на этом наезде вы заработаете. Тут в первой ветке чел мне пеняет на то, чего я не делала (он по итогу в претензии, что я строю два графика... но я их не строю, ему показалось), однако пока что он с этого получил +2, а я -5. Ну потому что резкий наезд всегда выглядит правдоподобно, не правда ли.

      ЗЫ естественно, единицы измерения влияют на объяснение. График в статье рисуется на координатной плоскости, где по х и по y берутся равные единицы.


      1. Andy_U
        02.01.2022 02:53
        +6

        На вашем счету пока ни одной статьи

        Чукча (добровольно) не писатель.

        Может быть, хоть на этом наезде вы заработаете.

        Я сюда не зарабатывать пришел.

        но я их не строю, ему показалось), однако пока что он с этого получил +2, а я -5.

        А уж очень вы агрессивны. И да, процитированное мною ваше описание производной вы обоснуете? И, кстати, слово "отдельная" (функция) - это же вы сами написали, и сами же начали с этим спорить, хотя по определению - производная - это функция.

        График в статье рисуется на координатной плоскости, где по х и по y берутся равные единицы.

        Берем matplotlib, строим график функции, потом мышкой растягивает окно, например, по горизонтали. Тангенсы углов наклона, очевидно уменьшатся. А вот производная от этого не изменится. В этом и беда геометрической интерпретации производной.


      1. lair
        02.01.2022 11:17
        +2

        Чисто теоретически за 800 комментариев можно было иметь +800.

        … а вы не знаете, да, что долгое время на хабре без статей было невозможно иметь рейтинг больше определенного?


      1. mayorovp
        02.01.2022 12:05
        +2

        Вот смотрите. На вашем счету пока ни одной статьи, 800++ комментариев, а рейтинг лишь 0.1

        Это означает лишь то, что комментарии написаны слишком давно. Рейтинг на Хабре, знаете ли, со временем уменьшается.


        И карма всего 1.

        Нормальная карма, по-выше вашей будет. Получать за каждый комментарий плюсы в карму невозможно.


        Может быть, хоть на этом наезде вы заработаете.

        "Наезд" я тут вижу только от вас.


      1. Whiteha
        03.01.2022 00:44
        +3

        Вы молодец за тягу к знаниям, за код и смелость. Но, услышьте суть критики, без этого не будет возможности исправить недостатки и превзойти себя. Перед тем как спорить со всеми комментаторами, нужно постараться понять "в чем же я могу ошибаться?". Спорить, не понимать и искать ответы это круто и правильно, это ведет к прогессу. Но формат статьи подразумевает публикацию финального результата измышлений, несущего ценность для читателя, чей средний возраст ну скорее всего в районе пост-институтском, где уже точно был математический анализ и программирование у технарей.

        То что производная воспринимая как отдельная функция это проблема - очевидно так может сказать только человек не понимающий темы на уровне первого курса института или 11 класса мат школы.

        В общем мои пожелания к вам:

        1. Относитесь к критике проще, не спешите спорить с ней. Старайтесь понять есть ли в ней здравый смысл и польза для вас, или она пуста.

        2. Не на всю критику стоит отвечать в принципе, молчание зачастую лучший выход.

        3. Если вас отправляют в гугл и вы не понимаете зачем - попробуйте сходить, не получилось понять - позовите поопытнее и постарайтесь разобраться вместе. Вновь не вышло - не ругайтесь, это пустое, попросите уточнить автора посыла что он имеет ввиду.

        4. Вас не будут всегда и во всем хвалить, учиться надо ради себя и своего будущего.

        5. Эта статья и комментарии к ней это ценный опыт, используйте его с умом.

        6. * титулы - суть апелляция к авторитету - это пустое. Старайтесь этого избегать и добиваться признания логикой.


    1. GeMir
      02.01.2022 02:07
      +4

      давайте, посчитайте угол наклона касательной, если dY/dX имеет размерность [v/s]?

      Угол наклона останется углом наклона. Это всего-лишь одна (геометрическая) интерпретация. Первая производная, наклон касательной и моментальная степень изменения величины (momentane Änderungsrate) — это как «имена», используемые в зависимости от контекста. У 3blue1brown есть

      отличное видео по теме:

      Переход MaryRabinovich на личности «а да вы ... а да я ... а да куда вам до меня» это не извиняет, разумеется.


      1. Andy_U
        02.01.2022 03:20
        +2

        Угол наклона останется углом наклона

        Не нужен тут он. Проводим секущую через данную точку и соседнюю, т.е. на самом деле вычисляем (f(x2)-f(x1))/(x2-x1), устремляем x2 к x1 и предел называем производной фунции в данной точке. Типа коэффициент наклона а есть (y=a*x+b), а угла (который arctan(а) нет, когда размерности разные по по осям. Да, это можно проиллюстрировать графически, но угол можно не упоминать.


        1. Tiriet
          02.01.2022 16:28

          не канает. Комплексные функции комплексного аргумента- рисуйте секущие. Функция Вейерштрасса- секущих- хоть сколько, касательной- ни одной.

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


          1. Andy_U
            02.01.2022 18:28

            не канает. Комплексные функции комплексного аргумента- рисуйте секущие

            Канает, я не говорил "рисуем". Дочитайте, пожалуйста, то мое предложение до конца, или хотя бы после слов "т.е. на самом деле".

            Почему нельзя для производной использовать определение через график

            Вы перепутали оппонента.

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

            Ну а тут Вы сами начинаете путаться, утверждая, что и у самой функции, и у обратной к ней график один и тот же.


    1. Tiriet
      02.01.2022 16:36

      Пусть по оси X - время в секундах, по оси Y - напряжение в вольтах. Ну, давайте, посчитайте угол наклона касательной, если dY/dX имеет размерность [v/s]?

      матанализ- это матанализ, а физика- это физика. Физика целиком опирается на матанализ, а матаназу до физики дела нет- он "вещь в себе", и тангенс угла наклона [v/s] вычисляет элементарно- откдывает эти [v/s], берет тангенс и дописывает справа их снова.


      1. Andy_U
        02.01.2022 18:30
        -1

        del


      1. Andy_U
        02.01.2022 18:49
        -1

        Пардон, на "отправить" случайно нажал.

        матанализ- это матанализ, а физика- это физика. Физика целиком опирается на матанализ, а матаназу до физики дела нет- он "вещь в себе"

        Ну, вообще-то, наоборот. Это физике нет дела до такой математики, которая не отражает свойства реального мира. Характерный пример - то, что мир трехмерный и евклидов, математики осознали относительно (в исторических масштабах) недавно, если сравнивать с временем существования вселенной, да даже с временем существования человеческой расы. Ошибка выжившего в чистом виде :)

        тангенс угла наклона [v/s] вычисляет элементарно- откдывает эти [v/s], берет тангенс и дописывает справа их снова.

        Я говорил не про то, что тангенс (а, кстати просто про коэффициент в уравнении линейной функции) нельзя посчитать, а что угол, т.е. arctan от размерной переменной, не инвариант отностительно смены системы единиц и масштаба графика. Типа я могу расставить отметки 1, 2, 3... по горизонтали через сантиметр, а по высоте, через дюйм, нарисовать сетку и построить по ней график функции. Очевидно, когда y=x, угол не будет равен 45 градусов, а вот производная равна единице. Ну и тогда зачем про углы и тригонометрию говорить?


        1. unsignedchar
          02.01.2022 20:20

          Ну так у функции и ее производной разные размерности (например, метры и метры за секунду) - на одном графике без дополнительных ухищрений их нельзя представить. Даже на декартовой системе координат, где все параллельно и перпендикулярно. А использование черепашки ещё добавляет путаницы.


  1. hellamps
    02.01.2022 04:24
    +3

    Я, если честно, тоже не понял в чем смысл.

    Есть довольно простой физический смысл производной, который имхо все визиуализирует = скорость изменения функции.

    зачем нужны черепашки старшеклассникам?


  1. ne555
    02.01.2022 08:51

    del


  1. geirby
    02.01.2022 12:30
    +6

    Очень низкий уровень статьи. Примерно так мне математику в школе преподавали. Потом пришёл интернет и оказалось, что это очень увлекательный мир, куда мне сейчас приходиться только подглядывать при помощи лекций на Stepic и ресурсов вроде 3blue.

    @MaryRabinovich ваша ошибка в том, что вы оказались не заинтересованы в вашей аудитории здесь, на хабре. Люди здесь не подневольные, оценили ваш уровень донесения мысли по существу, а не по регалиям и должности.

    В качестве позитивного развития событий могу предложить свою помощь в будущем оформлении. Хабр, на мой субъективный взгляд, относится к публикациям на математические темы скорее положительно, так что есть шанс все поправить.