Решение уравнений в python перебором

19 июня 2019 - Администратор

Решение уравнения перебором в целых числах в Python

Приведем пример программы на использование цикла for и функций в программах Python для поиска решений уравнения в целых числах В программе в функции задаётся уравнение, которое нужно решить в целых числах. Пользователем задаётся диапазон, в котором ищутся решения [lowerBound, upperBound], и свободный член уравнения a. Компьютер перебирает все числа для всех переменных в заданном диапазоне , проверяет являются ли они решением уравнения и выводит найденные решения уравнения  на экран.
Для примера мы разберём поиск решений для уравнения x^2 + y^2 + z^2 = a. Вы можете  легко поменять уравнение в функции eq()
Возведение в степень в Python осуществляется с помощью **, тогда выражение для нашего уравнения запишется в виде
x ** 2 + y ** 2 + z ** 2
Уравнение eq(x, y, z) объявляется с помощью функции def eq(x, y, z). def это ключевое слово в python для задания процедур или функций, eq это название функции, задающей выражение левой части уравнения в программе, а x, y, z это аргументы уравнения. С помощью команды return в конце функции в python обозначается то, что возвращает  функция при ее вызове в программе, после return мы и записываем выражение левой части уравнения. Подробнее о функциях в Python
С помощью выражения  int(input()) вводится в Python вводится целочисленная информация с клавиватуры, значения границ диапазона и свободный член уравнения. Подробнее об вводе данных с клавиатуры в Python
lowerBound = int(input("Введите нижнюю границу поиска. "))
upperBound = int(input("Введите верхнюю границу поиска. "))

a = int(input("Введите свободный член x^2 + y^2 + z^2. "))
Для перебора всех переменных  x, y и z используются вложенные циклы for. Подробнее об циклах for в python. Все аргументы перебираются в заданном диапазоне и каждый раз проверяется, равно ли уравнение с подставленными значениями переменных свободному члену. Если это условие выполняется, то на экран выводится решение уравнения
Полная программа на Python для решения уравнения в целых числах методом перебора
def eq(x, y, z):
    return x ** 2 + y ** 2 + z ** 2
lowerBound = int(input("Введите нижнюю границу поиска. "))
upperBound = int(input("Введите верхнюю границу поиска. "))
a = int(input("Введите свободный член x^2 + y^2 + z^2. "))
for x in range(lowerBound, upperBound):
    for y in range(lowerBound, upperBound):
        for z in range(lowerBound, upperBound):
            if (eq(x, y, z) == a):
                print("x=",x, end = ", ")
                print("y=", y, end = ", ")
                print("z=",z, end = " ")

Вернуться к содержанию курса python

Поделиться:

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

Нет комментариев. Ваш будет первым!