Оглавление:

Как создать программу численной интеграции на Python: 10 шагов
Как создать программу численной интеграции на Python: 10 шагов

Видео: Как создать программу численной интеграции на Python: 10 шагов

Видео: Как создать программу численной интеграции на Python: 10 шагов
Видео: НЕЙРОСЕТЬ своими руками за 10 минут на Python 2024, Июль
Anonim
Как создать программу числовой интеграции на Python
Как создать программу числовой интеграции на Python

Это учебное пособие о том, как создать и запустить программу, которая будет оценивать определенные интегралы с помощью алгоритма численного интегрирования. Я разделил шаги на 3 раздела: понимание алгоритма, который будет использоваться для создания программы, кодирование программы с использованием языка программирования Python и запуск программы. Это руководство предназначено для тех, кому может потребоваться быстро создать калькулятор для вычисления определенных интегралов или, возможно, потребуется алгоритм для использования в более крупномасштабной программе. Ожидаются базовые знания в области математического анализа, но рассматривается соответствующая математическая информация. Знания в области программирования не требуются, но они полезны, поскольку я лишь кратко описываю, как на самом деле работает программирование.

Что тебе понадобится:

Персональный компьютер с доступом в Интернет

Шаг 1. Понимание алгоритма. Часть 1. Определенный интеграл и его использование

Понимание алгоритма, часть 1: определенный интеграл и его использование
Понимание алгоритма, часть 1: определенный интеграл и его использование

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

Базовый определенный интеграл представляет собой площадь под кривой, определяемой функцией, например. f (x). Для определенного интеграла ищем область между двумя точками (обозначенными буквами a и b соответственно). На рисунке бирюзовая область - это область, о которой я говорю, и уравнение для ее определения также показано в этой области. Показанная на картинке функция произвольная.

Шаг 2: понимание алгоритма, часть 2: численное приближение

Понимание алгоритма, часть 2: численное приближение
Понимание алгоритма, часть 2: численное приближение

Компьютеру необходим широкий набор инструкций для вычисления этой площади под произвольной функцией, которая будет работать для любой функции, поэтому аналитические методы, с которыми вы, возможно, знакомы, бесполезны, поскольку они слишком специфичны. Один из методов приблизительного вычисления интегралов, с которым компьютер действительно может справиться, заключается в заполнении интересующей области определенным пользователем количеством прямоугольников одинаковой ширины и переменной высоты с последующим суммированием всех площадей прямоугольника. Жесткие свойства прямоугольников оставляют некоторую часть общей площади нетронутой, поэтому это считается приблизительным; однако, чем больше прямоугольников вы можете втиснуть между границами (a и b), тем точнее будет приближение, поскольку нетронутые области станут более разреженными. Поскольку компьютер будет выполнять эту задачу, вы можете установить очень большое количество прямоугольников в желаемой области, что сделает приближение чрезвычайно точным. На вспомогательной картинке представьте, что каждый прямоугольник в обозначенной области имеет одинаковую ширину. Я изо всех сил старался сделать их одинаковой ширины в Microsoft Paint, но не справился с задачей.

Шаг 3: понимание алгоритма. Часть 3: правило средней точки

Понимание алгоритма, часть 3: правило средней точки
Понимание алгоритма, часть 3: правило средней точки

Это правило определяет, как прямоугольники создаются и используются в приближении. Каждый прямоугольник из «N» прямоугольников должен иметь одинаковую ширину, Δx, но каждый n-й прямоугольник не может быть в точности таким же: изменяющийся фактор - это высота, которая изменяется в зависимости от функции, вычисленной в определенной точке. Правило средней точки получило свое название из-за того, что вы оцениваете высоту каждого прямоугольника как f (x_n), где «x_n» - соответствующая центральная точка каждого прямоугольника, расположенная слева или справа от прямоугольника. Использование средней точки похоже на реализацию среднего, которое сделает приближение более точным, чем если бы вы использовали правое или левое. На вспомогательной картинке для этого шага показано, как правило средней точки определяется математически.

Шаг 4. Создание программы. Часть 1. Загрузка компилятора / редактора Python

Теперь, когда вы понимаете алгоритм, который необходимо реализовать, нужно заставить компьютер выполнять вычисления за вас. Первый шаг к тому, чтобы сказать компьютеру, что делать, - это получить необходимые инструменты. Этот алгоритм можно запрограммировать на любом языке; для простоты эта программа будет написана на языке Python. Чтобы дать компьютеру команду выполнять операции с Python, вам понадобится редактор, который принимает инструкции, написанные на этом языке, которые затем будут скомпилированы в машинный язык, понятный вашему компьютеру, чтобы он мог выполнять задачи, которые вы ему приказываете. В наши дни редактор и компилятор обычно интегрированы, но это не всегда так. Вы можете использовать любой удобный вам редактор / компилятор, но я покажу вам, как получить мой личный фаворит для Python: Canopy. Если у вас уже есть редактор / компилятор, вы можете пропустить эти шаги.

  1. Перейдите на
  2. Нажмите Загрузить Canopy.
  3. Нажмите кнопку загрузки, соответствующую вашей операционной системе.

    Загрузка начнется автоматически

  4. После запуска исполняемого файла следуйте инструкциям по инстилляции.
  5. Запустить программу
  6. Нажмите «Редактор» в главном меню программы.
  7. Нажмите "создать новый файл" в центре экрана.

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

Шаг 5: Создание программы. Часть 2: Импорт функций и определение переменных

Создание программы, часть 2: импорт функций и определение переменных
Создание программы, часть 2: импорт функций и определение переменных

Скопируйте код с картинки.

Для любой программы, которую вы пишете, будут переменные. Переменная - это имя, присвоенное значению, с которым будут работать и которое может измениться. В большинстве языков программирования (если не во всех) вам необходимо инициализировать переменную, прежде чем программа сможет внести в нее изменения. В случае этой программы я назвал переменные «N», «a» и «b». Эти значения представляют количество итераций (также известное как количество прямоугольников), нижнюю границу и верхнюю границу соответственно. Вы можете называть их как угодно, но для соответствия формулам, приведенным в разделе «Понимание алгоритма, часть 3: правило средней точки», лучше оставить их такими же. Обратите внимание, что они не просто установлены на определенное значение. Это потому, что они являются входными данными, которые при запуске программы пользователь программы может определить, каким будет значение. Текст в кавычках после команды ввода появляется, когда вы запускаете программу, сообщая вам, какой тип значения вводить. Вы также заметите, что перед обозначениями ввода используются «int» и «float». Эти термины сообщают компьютеру, какой тип переменной будет это значение. «Int» - это целое число, а «float» - это значение с плавающей запятой (т. Е. Десятичное число). Должно быть понятно, почему они обозначены как таковые.

Любой текст после символа «#» является комментарием, позволяющим программисту гуманистически следовать за кодом; Я сделал некоторые комментарии в своем коде, которые вы будете копировать, но не стесняйтесь добавлять любые комментарии, которые конкретно вам помогут. Программа не будет читать ничего, что стоит перед командой "#".

Часть кода, читающая «from math import *», сообщает программе, что необходимо импортировать массив математических функций, которые можно использовать без необходимости программировать их в себе. «*» Просто означает «все». Прочтите эту часть кода как: из математической библиотеки импортируйте все функции. Это позволяет использовать математические функции, такие как синус, косинус, логарифм, экспонента и т. Д. Эти функции могут быть математически интегрированы в код.

Шаг 6: Создание программы. Часть 3: Создание функции для интеграции

Создание программы. Часть 3: Создание функции для интеграции
Создание программы. Часть 3: Создание функции для интеграции

Скопируйте код с картинки под предыдущим кодом.

ВНИМАНИЕ: этот раздел очень плотный, и я хочу прояснить некоторые вещи, которые потенциально могут сбивать с толку. Когда говорят о программировании, часто встречается слово «функция». Этот термин также часто встречается, когда вы говорите о математике. Итак, с этого момента, когда я говорю о функции в смысле программирования, я буду писать «функция Python», а когда я говорю о математической функции, я буду говорить «математическая функция». В какой-то момент мы будем использовать функцию Python в качестве представления рассматриваемой математической функции.

Следующий фрагмент кода является сердцем программы. Здесь определена функция Python, которая выполняет алгоритм численного интегрирования с использованием правила средней точки. «def Integrate (N, a, b)» читается как: определить функцию под названием «Integrate», которая принимает переменные «N», «a» и «b» и возвращает площадь под кривой (математическая функция) который также определен в функции Python «Интегрировать». Вы можете вызывать эту функцию Python как угодно при кодировании, но имеет смысл называть ее интегрированной, поскольку это функция, которая действительно интегрирует математическую функцию.

Здесь стоит прокомментировать, как Python разделяет блоки кода. Блок кода - это целый раздел, который выполняет определенную задачу. В разных языках программирования будут обозначены способы различать эти «блоки». Для Python блок отличается отступами: каждый раздел, выполняющий задачу, имеет свой собственный отступ, и могут быть блоки с отступом внутри других блоков с отступом. Это представляет задачи внутри задач и, по сути, указывает порядок, в котором должен выполняться код. В случае определенной функции Python «Интеграция» все в этой функции выделяется одним блоком, таким образом различая задачи, которые будут выполняться в этой функции. В этой функции Python есть части с отступом, которые также выполняют свои собственные задачи. Это выглядит следующим образом: указана команда (задача), за командой следует двоеточие, а то, что команда делает, отображается с отступом под ней.

Сразу после определения функции Python «интегрировать» вы определите другую функцию Python, называемую f (x). Это представляет собой математическую функцию, которая будет интегрирована. Для каждой отдельной математической функции, которую вы хотите интегрировать, вам нужно будет перейти к этой строке программы, чтобы изменить ее (в отличие от переменных, которые определяются при запуске программы). Каждая функция Python будет иметь возвращаемое значение, это то, что функция возвращает, когда вы передаете ей значение. В этом случае добавляемым значением является «x», и этот член «x» будет принимать значение того, что вы его бросили - это временное значение.

Затем цикл for действует как суммирование, определенное в формулах в разделе «Общие сведения об алгоритме» этого руководства. Для этого суммирования требуется еще пара переменных, одна из которых будет действовать как возвращаемое значение для всей функции «Интегрировать» Python. Перед циклом for я обозначил эти переменные как «значение» и «значение2». задача цикла for - перебрать диапазон значений для обозначенной переменной, которую можно удобно определить в команде цикла for; в данном случае эта переменная - «n». Диапазон, для которого выполняется итерация, - от 1 до N + 1. Вы должны заметить, что суммирование, определенное в вышеупомянутых формулах, находится в диапазоне только от 1 до N. Мы определяем его таким образом, потому что язык Python считает каждое повторное значение, начиная с нуля, поэтому нам, по сути, нужно сдвинуть диапазон значений, чтобы он соответствовал желаемому. диапазон. Затем цикл for позволяет суммировать все высоты прямоугольника вместе и сохраняет это значение в переменной, которую я назвал «значением». Это видно в фрагменте кода, который отображается как: значение + = f (a + ((n- (1/2)) * ((b-a) / N))).

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

Шаг 7: Создание программы. Часть 4: Отображение ответа

Создание программы. Часть 4: Отображение ответа
Создание программы. Часть 4: Отображение ответа

Скопируйте код с картинки под предыдущим кодом.

Теперь, когда ответ можно получить с помощью функции Python «Интегрировать», мы хотим иметь возможность отображать его. Это просто вопрос помещения значений, которые были введены пользователем («N», «a» и «b»), в функцию «Интегрировать» Python и печати их на экране. Эта команда отображается в строке 21, и это все, что вам нужно сделать, чтобы завершить этот шаг. Код в строках 19 и 20 предназначен только для того, чтобы «улучшить» вывод всей программы. «print (« ………………………. »)» отделяет входной раздел программы от выходного раздела, а «print (» Вот ваш ответ: «)» - это просто обозначение, которое ответ будет печататься после этой строки текста.

Шаг 8: Запуск программы Часть 1: Запуск программы как есть

Выполнение программы, часть 1: выполнение программы как есть
Выполнение программы, часть 1: выполнение программы как есть

Если вы не используете Canopy, вам, вероятно, даже не нужно выполнять этот шаг, и для запуска программы могут потребоваться другие процедуры. В Canopy, прежде чем вы сможете запустить программу, вам нужно будет ее сохранить. Тип файла для программы Python - файл.py - он автоматически сохраняется как это. Выберите, где вы хотите сохранить файл, после чего вы сможете запустить программу.

Запуск программы:

  1. Нажмите зеленую кнопку, которая выглядит как «кнопка воспроизведения», расположенная на панели инструментов чуть выше того места, где отображается имя вашего файла (см. Рисунок).
  2. Затем программа запустится на нижнем экране редактора, известного как среда анализа данных Canopy. Предполагая, что вы скопировали подсказки так, как я их написал, вы должны увидеть внизу среды анализа данных Canopy подсказку: «Введите, сколько раз вы хотите суммировать (больше раз = более точно):». (см. картинку)
  3. Введите значение того, сколько раз вы хотите выполнить итерацию, например, 10000 (сколько прямоугольников вы хотите вставить в свою область), затем нажмите Enter.
  4. Появятся дополнительные подсказки с операторами, которые должны быть знакомыми подсказками ввода, которые вы закодировали в программе на шаге 5. Заполните их соответствующим образом, как в пункте 3 выше.
  5. Нужно вычислить интеграл, и должен появиться результат.

Если вы закодировали программу, как показано на предыдущих рисунках, вы только что интегрировали f (x) = x ^ 2 в некоторых пределах. Интеграл от x ^ 2 легко вычислить вручную, поэтому вам следует проверить и убедиться, что программа дает очень точный ответ на правильное аналитическое значение, определенное вручную. Когда я запускаю программу со значениями N = 10000, a = 0 и b = 10, я получаю ответ 333,33333249999964. Правильный аналитический ответ - 333,333. Это невероятно точно и быстро. Вы по существу сжали 10 000 прямоугольников между 0 и 10 по оси x и использовали их для аппроксимации площади под кривой x ^ 2!

Шаг 9: Выполнение программы. Часть 2: Интеграция других математических функций

Выполнение программы, часть 2: интеграция других математических функций
Выполнение программы, часть 2: интеграция других математических функций

На предыдущем шаге, если вы верно следовали инструкциям, вы интегрировали f (x) = x ^ 2. Это не единственная математическая функция, которую может интегрировать эта программа. Напомним, что на шаге 5 вы импортировали в программу массив математической библиотеки функций Python. Это позволяет использовать более сложные математические функции, которые можно интегрировать. Давайте попробуем. Конечно, вы можете использовать любую функцию, которую хотите, но я дополнительно продемонстрирую точность этого кода, интегрировав конкретную математическую функцию, которая дает хорошо известное значение при интегрировании в определенном диапазоне. Эта функция f (x) = Sin [x]. Эта математическая функция отображается на первом сопроводительном изображении в диапазоне от 0 до 2π, а интересующая область заштрихована бирюзовым цветом. В этом интервале столько же положительных областей, сколько и отрицательных, поэтому, если вы сложите общую площадь, вы должны получить ноль. Посмотрим, действительно ли это происходит:

Помещаем в программу математическую функцию f (x) = Sin [x]:

  1. Перед повторным запуском программы под комментарием «# введите вашу функцию после возврата» введите: sin (x), где в настоящее время находится x ** 2. (см. рисунок).
  2. Запустите программу, снова нажав зеленую кнопку воспроизведения.
  3. Введите 10000 в качестве значения N (сколько раз вы хотите просуммировать).
  4. введите «0» для нижней границы.
  5. Положите 6,2832 дюйма для верхней границы (приблизительно 2π).
  6. Посмотрите, какую ценность вы получите.

Когда я это сделал, я получил значение 1.079e-10: это равно.0000000001079, что действительно близко к нулю, поэтому оно кажется точным и показывает, что алгоритм адекватно обрабатывает отрицательную область.

Шаг 10: Выполнение программы Часть 3: Расширение программы

На этом все готово: у вас есть рабочий определенный интегральный алгоритм, закодированный на Python, который работает плавно и дает очень точные ответы. Однако эту программу можно улучшить. Я не программист, и у меня минимальный опыт работы с Python. Фактически, мне пришлось освежиться в использовании Python для завершения этого руководства, но это должно вселить в вас уверенность в том, что Python - такой простой язык для изучения. Я хочу сказать, что вы можете расширить эту программу, сделав ее более эффективной, возможно, реализовать какой-нибудь графический интерфейс и сделать ее более удобной для пользователя.

Мои мысли по поводу расширения программы:

  • Реализовать графический пользовательский интерфейс, позволяющий запускать программу без использования интерактивной среды анализа данных Canopy.
  • Сделайте так, чтобы математическую функцию, которую нужно интегрировать, не нужно было вводить внутри программы, но можно было бы ввести после запуска программы (изначально я пытался это сделать, но не мог понять).
  • Определите функцию Python «Интегрировать», чтобы она принимала функцию f (x) вместо того, чтобы в ней была определена функция f (x).

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

Рекомендуемые: