Как найти корни уравнения python

Найти корни квадратного уравнения

Квадратное уравнение имеет вид

При его решении сначала вычисляют дискриминант по формуле

Если D > 0, то квадратное уравнение имеет два корня; если D = 0, то 1 корень; и если D

Примеры выполнения кода:

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

Если a = 0 , то квадратное уравнение превращается в линейное, которое решается иным способом. Оно всегда имеет один корень.

Квадратное уравнение

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

Постановка задачи

Уравнение, которое будем решать, выглядит следующим образом: a·x²+b·x+c=0. Пользователю предлагается ввести значения a, b и с в терминале. После этого программа посчитает дискриминант. На его основе найдем решения уравнения – значения x, для которых будет выполняться равенство.

Вот пример работы программы, которая будет написана.

Программа

Для решения квадратных уравнений на Python 3 напишем код, приведенный ниже. Разберем некоторые моменты, которые мы использовали в этой простой программе:

  • print — эта функция выводит на экран информацию.
  • input — выводит информацию и предлагает пользователю ввести данные.
  • b**2 — это возведение в степень, в данном случае переменная b возводится в квадрат.
  • str — эта функция приводит данные к строковому виду.
  • if-elif-else — это условные операторы в языке Python. Исходя из значения discriminant мы определяем количество корней квадратного уравнения.
  • discriminant ** 0.5 — с помощью такого способа извлекаем квадратный корень. В Python есть несколько способов извлечения корней, например, с помощью функции sqrt из библиотеки math. Про способы извлечения корней в Python описано в отдельной статье.

Запустим программу и введём нужные коэффициенты.

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

Дополнительно

Хотелось бы уделить внимание ещё одному моменту. Если дискриминант отрицательный, то действительных корней нет. Но будут комплексные корни. Если мы хотим их обрабатывать, то следует изменить конструкцию условных операторов следующим образом:

Тогда пример решения уравнения будет выглядеть следующим образом:

Как видим, получили два комплексных корня.

Этот простой код написанный на Python 3 можно для обучения программированию немного усложнить:

  • Предлагать запрос в конце программы «Решить ещё одно уравнение (y/n): ». И если пользователь введет «y», то заново запросить коэффициенты. Это нужно делать в цикле. Подробнее о циклах в Python можно прочитать здесь.
  • Сделать проверку корректности ввода. Ведь пользователь вместо числа может ввести какую-нибудь строку, которая не будет корректно обработана. Про проверку на число описано в отдельной статье.

NumPy в Python. Часть 4

Всем здравствуйте, вот мы и подошли к конечной части. Приятного чтения!
Навигация:

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

Здесь, массив возвращает коэффициенты соответствующие уравнению: .
Может быть произведена и обратная операция: передавая список коэффициентов, функция root вернет все корни многочлена:

Заметим, что в этом уравнении два корня мнимые.
Коэффициенты многочлена могут быть интегрированы. Рассмотрим интегрирование в . Обычно константа C равна нулю:

Аналогично, могут быть взяты производные:

Функции polyadd, polysub, polymul и polydiv также поддерживают суммирование, вычитание, умножение и деление коэффициентов многочлена, соответственно.
Функция polyval подставляет в многочлен заданное значение. Рассмотрим многочлен при x = 4:

В заключение, функция polyfit может быть использована для подбора (интерполяции) многочлена заданного порядка к набору значений:

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

Статистика

В придачу к функциям mean, var и std, NumPy предоставляет еще некоторые методы для работы со статистическими данными в массивах.
Медиана может быть найдена так:

Коэффициент корреляции для некоторых переменных, наблюдается несколько раз и может быть найден из массивов вида: [[x1, x2, . ], [y1, y2, . ], [z1, z2, . ], . ], где x, y, z это разные квантовые наблюдаемые и номера указывают количество «наблюдений»:

Имеем возвращаемый массив c[i, j] который хранит корреляционный коэффициент для i-тых и j-тых квантовых наблюдаемых.
Аналогично, ковариационный момент может быть найден:

Случайные числа

Важная часть каждой симуляции это способность генерировать случайные числа. Для этого мы используем встроенный в NumPy генератор псевдослучайных чисел в под-модуле random. Числа являются псевдо случайными, в том плане что, они сгенерированы детерминистически из порождающего элемента (seed number), но рассредоточены в статистическом сходстве с случайным образом. Для генерации NumPy использует особенный алгоритм который имеет название Mersenne Twister.
Задать порождающий элемент последовательности случайных чисел можно так:

Seed это целое число. Каждая программа которая запускается с одинаковым seed`ом будет генерировать одинаковую последовательность чисел каждый раз. Это может быть полезно для отладки, но вообще нам не нужно задавать seed, на самом деле, когда мы запускаем программу несколько раз, мы хотим получать каждый раз разную последовательность чисел. Если эта команда не будет выполнена, то NumPy автоматически выбирает случайный seed (базирующийся на времени), который является разным при каждом запуске программы.
Массив случайных чисел из полуинтервала [0.0, 1.0) может быть сгенерирован так:

Функция rand может быть использована для генерации двумерных массивов, или можно использовать функцию reshape:

Для генерации единичного случайного числа на интервале [0.0, 1.0):

Для генерации случайного целочисленного числа в диапазоне [min, max) используем функцию randint(min, max):

В каждом нашем примере, мы генерировали числа из непрерывного равномерного распределения. NumPy также включает генераторы для других распределений, таких как: Бета, биномиальное, хи-квадрат, Дирихле, экспоненциальное, Фишера, Гамма, геометрическое, Гамбала, гипергеометрическое, Лапласа, логистическое, логнормальное, логарифмическое, мультиномиальное, многомерное нормальное, отрицательное биномиальное, нецентральное хи-квадрат, нецентральное Фишера, нормальное (Гаусса), Парето, Пуассона, степенное, Рэлея, Коши, Стьюдента, треугольное, Фон-Миса, Вальда, Вейбулла и Ципфа. Рассмотрим два примера.
Для генерации из дискретного распределения Пуассона при λ = 6.0,

Для генерации числа из нормального распределения (Гаусса) при среднем значении μ = 1.5 и стандартной девиации σ = 4.0:

Для получении числа из нормального распределения (μ = 0, σ = 1), без указания аргументов:

Для генерации нескольких значений используем аргумент size:

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

Заметим, что функция shuffle модифицирует уже существующий массив и не возвращает новый.

Некоторая дополнительная информация

NumPy включает еще много других функций о которых мы не упоминали здесь. В частности это функции для работы с дискретным преобразованием Фурье, более сложными операциями в линейной алгебре, тестированием массивов на размер / размерность / тип, разделением и соединением массивов, гистограммами, создания массивов из каких-либо данных разными путями, созданием и оперированием grid-массивов, специальными значениями (NaN, Inf), set-операции, созданием разных видов специальных матриц и вычислением специальных математических функций (Например: функции Бесселя). Также вы можете посмотреть документацию NumPy для более точных деталей.

Модули SciPy

SciPy очень хорошо расширяет функционал NumPy. Мы не будем говорить о его деталях, но рассмотрим некоторые его возможности. Большинство функций SciPy доступны после импорта модуля:

Функция help обеспечит полезной информацией о SciPy:

>>> help(scipy)
Help on package scipy:

NAME
scipy
FILE
c:\python25\lib\site-packages\scipy\__init__.py
DESCRIPTION
SciPy — A scientific computing package for Python
===================================================
Documentation is available in the docstrings and
online at http://docs.scipy.org.

Contents
———
SciPy imports all the functions from the NumPy namespace, and in
addition provides:


источники:

http://all-python.ru/primery/kvadratnoe-uravnenie.html

http://habr.com/ru/post/415373/