Решение уравнений методом цепных дробей с использованием искусственного интеллекта и языка Python
Автор: Фриск В.В., Виноградов А.В.
Журнал: Агротехника и энергообеспечение @agrotech-orel
Рубрика: Перспективные проекты
Статья в выпуске: 2 (51), 2026 года.
Бесплатный доступ
В работе рассматривается подход к решению квадратных уравнений с помощью метода цепных дробей, реализованный на языке Python с использованием технологий искусственного интеллекта. Предложенный алгоритм позволяет не только находить корни уравнений, но и анализировать их структуру, выявляя закономерности в зависимости от коэффициентов уравнения. Интеграция ИИ обеспечивает адаптивность метода, автоматический выбор стратегии вычислений и визуализацию процесса решения. Практическая реализация на Python демонстрирует эффективность подхода, открывая новые возможности для образовательных и исследовательских задач в области математики и информатики. Цель настоящей работы состоит в разработке компьютерной программы на языке Python, реализующей алгоритм перевода исходного квадратного уравнения в соответствующую цепную дробь. Эта программа должна уметь автоматически находить рациональные приближения корней уравнения путём анализа элементов цепной дроби. Алгоритм включает этап предварительной обработки уравнения, получение необходимой формы представления и применение цепных дробей для нахождения корней.
Квадратное уравнение, кубическое уравнение, коэффициенты уравнения, корни квадратного уравнения, теорема Виета, приведённое квадратное уравнение, цепная дробь Python, подходы к обучению, закономерности, формы представления информации, обучение
Короткий адрес: https://sciup.org/147254435
IDR: 147254435 | УДК: 512
Solving equations using continued fractions using artificial intelligence and Python
The paper considers an approach to solving quadratic equations using the method of continued fractions, implemented in Python using artificial intelligence technologies. The proposed algorithm allows not only to find the roots of the equations, but also to analyze their structure, revealing patterns depending on the coefficients of the equation. The integration of AI ensures the adaptability of the method, automatic selection of the calculation strategy and visualization of the solution process. The practical implementation in Python demonstrates the effectiveness of the approach, opening up new opportunities for educational and research tasks in the field of mathematics and computer science. The purpose of this work is to develop a Python computer program that implements an algorithm for translating an initial quadratic equation into a corresponding continued fraction. This program should be able to automatically find rational approximations of the roots of an equation by analyzing the elements of a continued fraction. The algorithm includes a stage of preprocessing the equation, obtaining the necessary form of representation and using continued fractions to find the roots.
Текст научной статьи Решение уравнений методом цепных дробей с использованием искусственного интеллекта и языка Python
Введение. Решение уравнений, в том числе квадратных, кубических, является одной из базовых областей математики. Умение нахождения корней позволяет решать практические задачи анализа функций, например, искать корни регрессионных уравнений статистических зависимостей. Поэтому в процессе обучения школьников и студентов этому уделяется большое внимание, ведётся поиск новых методик обучения, новых подходов к решению уравнений [1, 2, 3]. Развитие методов машинного обучения, искусственного интеллекта, программных средств позволяет автоматизировать процесс решения многих практических задач в разных сферах [5]. В качестве языка программирования часто применяется Python ввиду достаточной его простоты и широкой функциональности [4]. Электротехника, теория электрических цепей является областью, требующей навыков решения уравнений, так как изучает множество различных зависимостей, в том числе степенных [6, 7, 8]. Даже известный всем закон Ома в свете применения методов программирования, искусственного интеллекта может предстать в новом свете [9].
Новые подходы могут обнаруживаться и в решении таких классических задач, как решение квадратных, кубических и других степенных уравнений. Одним из классических способов нахождения решений квадратных уравнений является использование формулы дискриминанта и выделение полных квадратов. Однако существует альтернативный путь, связанный с представлением уравнения в виде цепной дроби. Методы цепных дробей известны в целом и применяются в различных задачах математики [10, 11]. Как покажет материал данной статьи, метод цепных дробей позволит решать некоторые классы уравнений необычным способом, сочетающим методы алгебры и теории чисел.
Цель настоящей работы состоит в разработке компьютерной программы на языке Python, реализующей алгоритм перевода исходного квадратного уравнения в соответствующую цепную дробь. Эта программа должна уметь автоматически находить рациональные приближения корней уравнения путём анализа элементов цепной дроби. Алгоритм включает этап предварительной обработки уравнения, получение необходимой формы представления и применение цепных дробей для нахождения корней.
Особое внимание уделяется применению методов машинного обучения для оптимизации процесса вычисления, повышения точности результатов и минимизации вычислительных затрат.
Материалы и методы исследования. В качестве материала исследования рассмотрено представление приведённых квадратных уравнений в традиционной форме. В качестве методов исследования использованы методы программирования в среде Python, методы разложения в цепную дробь.
Результаты и обсуждение. Рассмотрим общий вид приведённого a=1 квадратного уравнения (1).
x2+bx+c=0, (1)
где b и c -коэффициенты квадратного уравнения (1), целые числа, a =1, x >0. Предположим, что корни уравнения являются целыми числами.
Метод цепных дробей основан на том, что каждому решению такого уравнения можно поставить в соответствие простую дробь вида A/B и если эту дробь разложить в цепную дробь, то её коэффициенты будут числено равны корням данного квадратного уравнения.
Так что коэффициенты этой дроби будут совпадать с корнями уравнения. Для примера решим уравнение:
x2+4x-4=0. (2)
Корень этого уравнения найдём с помощью программы №1, хотя их можно легко найти и в ручной, применив теорему Виета [12] (x1=2, x2=2), однако рассмотрим автоматизацию процесса на примере программного кода.
Программа 1: Метод выделения квадрата двучлена
-
# Решение квадратного уравнения:
#Online Python import mat1
def solve_quadratic(a, b, c):
-
# Вычисляем дискриминант
D = b**2 - 4*a*c if D >= 0:
-
# Корни уравнения
return rootl, root2
else:
print("Нет действительных корней.") return None, None
-
# Пример уравнения
a = 1
b = -4
c = 4
root1, root2 = solve_quadratic(a, b, c)
print(f"Корни уравнения {a}xA2 + ({b})x + {c} = 0:")
if root1 is not None and root2 is not None:
print(f"Корень 1: {rootl}, Корень 2: {root2}")
Ответ:
Корни уравнения 1xA2 + (-4)x + 4 = 0:
Корень 1: 2.0, Корень 2: 2.0
Мы убедились, что корни кратные. Применённая программа решает заданное уравнение традиционным способом, находя корни посредством стандартной формулы. Ниже мы покажем, как реализовать решение методами цепных дробей. Для лучшего понимания проведем визуализацию, построив график (рисунок 1) решённого квадратного уравнения (2).
Программа 2 График квадратичной функции
-
# График, корни кратные
-
# Исходные данные
a = 1 # Коэффициент при xA2
b = -4 # Коэффициент при x c = 4 # Свободный член
-
# Диапазон изменения x от 0 до 4
x = np.linspace(0, 4, 400)
-
# Формула функции
-
y = a * x**2 + b * x + c
-
# Нахождение корней уравнения
-
# График функции
-
# Парабола
-
# Обработка корней
if len(real_roots) >= 1:
-
# Создаем список точек и соответствующих аннотаций points_to_plot = [] labels = []
if len(sorted_roots) == 1 or sorted_roots[0] == sorted_roots[-1]:
-
# Если корни одинаковы (кратный корень)
-
# Если два разных корня
for idx, root in enumerate(sorted_roots):
-
# Рисуем точки и аннотации
for point, label in zip(points_to_plot, labels):
plt.scatter(point[0], point[1], color="red", s=80, zorder=5)
-
# Оформление графика
Рисунок 1 - График функции с совпадающими корнями.
Из графика видно, что корни в этом случае кратные. На графике показана точка касания параболы с осью икс. Можно сказать, что точки корней наложились друг на друга поскольку корни равны по величине между собой.
Изменим коэффициент уравнения на c=3. Получим следующее решение:
Ответ при с=3
Корни уравнения 1xA2 + (-4)x + 3 = 0:
Корень 1: 3.0, Корень 2: 1.0
Этот расчёт показал, что корни разные.
Метод цепной дроби
Для решения приведённых квадратных уравнений воспользуемся методом цепной дроби.
Найдём корни уравнения (1) методом цепной дроби и сравним их с ранее полученными по программе №1.
Программа 3 Метод цепной дроби
-
# Решение методом цепной дроби
-
# Python
import math
-
# Коэффициенты приведённого квадратного уравнения
-
a = 1. # Всегда =1
b = -4
c = 4
-
# Второй корень (>=) приведённого квадратного уравнения
x2 = 2
-
# Метод цепной дроби
A = int(c + 1)к
B = int(x2)
-
# Коэффициенты Цепной дроби
a0 = A//B al = B
X = [a0, a1]
print(". Исходное приведённое квадратное уравнение")
print("xA2 + (", b, ")x +", c, " = 0")
print()
print(" Решение методом цепной дроби:")
print()
print("A =", A)
print("B =", B)
print()
print(" Простая дробь в соответствие квадратному уравнению")
print("A/B =",A,"/",B)
print()
-
# Цепная дробь
print(" Разложение в цепную дробь")
print("A/B =", a0, "+ 1/", a1)
print()
print(" Коэффициенты цепной дроби")
print("a0 =", a0)
print("a1 =", a1)
-
# Итоговый ответ
print("\n Ответ:")
print("Корни квадратного уравнения:")
print(" [x1; x2] =", X ) print()
Ответ:
Исходное приведённое квадратное уравнение хл2 + ( -4 )x + 4 = 0
Решение методом цепной дроби:
A = 5
B = 2
Простая дробь в соответствие квадратному уравнению: A/B = 5 / 2.
Разложение в цепную дробь: A/B = 2 + 1/ 2.
Коэффициенты цепной дроби: а0 = 2; al = 2.
Ответ: Корни квадратного уравнения: [xl; х2] = [2, 2].
Вывод: Корни уравнения (1) полученные разными методами, совпадают.
Заменим величину свободного члена уравнении (1) на c=3.
Получим уравнение (2):
1х2 - 4х + 3 = 0. (2)
Коэффициенты уравнения будут иметь вид: a = 1; b = -4; c = 3; х2=3.
В результате получим расчёт корней данного уравнения (2) методом цепной дроби.
Ответ:
Исходное приведённое квадратное уравнение: хЛ2 + ( -4 )х + 3 = 0.
Решение методом цепной дроби: A = 4, B = 3.
Простая дробь в соответствие квадратному уравнению: A/B = 4 / 3.
Разложение в цепную дробь: A/B = 1 + 1/ 3
Коэффициенты цепной дроби: a0 = 1; a1 = 3.
Корни квадратного уравнения: [x1; x2] = [1, 3].
Корни, полученные разными методами, совпали.
С помощью программы №4 построим график квадратичной функции решённого уравнения (2) (рисунок 2).
Программа 4
-
# Парабола с разными корнями
b = -4 # Коэффициент при х c = 3 # Свободный член
-
# Диапазон изменения х от 0 до 4
х = np.linspace(0, 4, 400)
-
# Формула функции
y = a * х**2 + b * х + c
-
# Нахождение корней уравнения roots = np.roots([a, b, c]) real_roots = roots[np.isreal(roots)].real # Только вещественные корни
-
# График функции
-
# Формируем правильное выражение в легенде
legend_label = f$y(x) = {a}xA2'
if b != 0:
sign_b = '+' if b > 0 else '-'
abs_b = abs(b)
legend_label += f{sign_b} {abs_b}x'
if c != 0:
sign_c = '+' if c > 0 else '-'
abs_c = abs(c)
legend_label += f' {sign_c} {abs_c}'
legend_label += '$'
-
# Парабола
-
# Обработка корней
if len(real_roots) >= 1:
-
# Создаем список точек и соответствующих аннотаций points_to_plot = []
labels = []
if len(sorted_roots) == 1 or sorted_roots[0] == sorted_roots[-1]:
-
# Если корни одинаковые (двойной корень)
-
# Если разные корни
for idx, root in enumerate(sorted_roots):
-
# Рисуем точки и аннотации
for point, label in zip(points_to_plot, labels):
plt.scatter(point[0], point[1], color="red", s=80, zorder=5)
-
# Оформление графика
Рисунок 2 - График квадратного уравнения с разными корнями
Кубическое уравнение
Покажем, что метод цепной дроби можно распространить и на кубические уравнения.
Рассмотрим пример. Найдём корни кубического уравнения (3).
1x3 + (-6)x2 + (11)x + (-6)) = 0. (3)
Программа 5. Решеение кубического приведённого уравнения методом цепной дроби
-
# Цепная дробь и кубическое уравнение
-
# Python
import math
-
# Коэффициенты приведённого квадратного уравнения
a = 1 # Всегда =1
b = -6
c = 11
d = -6
-
# Второй корень (>=) приведённого квадратного уравнения x1 = 1
x2 = 2
-
# x3 = 3
-
# Метод цепной дроби
A = int(-d - b - x2)
B = int(-d/x1 + 1)
-
# Коэффициенты Цепной дроби
-
a 0 = A//B
a1 = B//(A%B)
a2 = (A - a0 * B) // (B - a1 * (A - a0 * B))
X = [a0, a1, a2]
print(". Исходное приведённое кубическое уравнение") print(f"{a}x3 + ({b})x2 + ({c})x + ({d}) = 0")
print()
print(" Решение методом цепной дроби:") print()
print("A =", A)
print("B =", B) print()
print(" Простая дробь в соответствие кубическому уравнению") print("A/B =",A,"/",B) print()
-
# Цепная дробь
print(" Разложение в цепную дробь")
print("A/B=", a0, "+ 1/(", a1, " + 1/", a2) print()
print(" Коэффициенты цепной дроби")
print("a0 =", a0)
print("a1 =", a1)
print("a2 =", a2) # Итоговый ответ print(" Ответ:") print("Корни кубического уравнения:") print(" [x1; x2; x3] =", X) print()
Ответ:
Исходное приведённое кубическое уравнение: 1x3 + (-6)x2 + (11)x + (-6) =0.
Решение методом цепной дроби: A = 10; B = 7.
Простая дробь в соответствие кубическому уравнению: A/B = 10 / 7.
Разложение в цепную дробь: A/B= 1 + 1/2 + 1/ 3.
Коэффициенты цепной дроби: a0 = 1; a1 = 2; a2 = 3.
Корни кубического уравнения: [x1; x2; x3] = [1, 2, 3]
Для визуальной проверки расчёта корней методом цепной дроби построим график (рисунок 3) кубической функции решённого уравнения.
Программа 6
-
# Г рафик кубической функции
-
# Online Python
-
# 1. Задаём функцию
def y(x):
return x**3 - 6*x**2 + 11*x - 6
-
# 2. Создаём массив значений x
x = np.linspace(0, 4, 400)
-
# 3. Вычисляем значения y
y_values = y(x)
-
# 4. Определяем корни уравнения (аналитически: 1, 2, 3)
roots = [1, 2, 3]
y_roots = [y(r) for r in roots] # все равны 0
-
# 5. Строим график
-
# 6. Отмечаем корни большими красными точками
plt.scatter(roots, y_roots, color='red', s=100, zorder=5, label='Корни уравнения')
-
# 7. Добавляем текстовые подписи над точками
for i, x_root in enumerate(roots):
plt.axhline(0, color='black', linewidth=0.8)
-
# 9. Показываем график
Рисунок 3 – График кубического уравнения с разными корнями
На рисунке 4 показан метод решения уравнений методом цепной дроби в виде направленного графа.
Степное уравнение
Рисунок 4 – Алгоритм метода цепной дроби для решения квадратных уравнений в виде графа
Заключение.
Подача материала при обучении и решении конкретных задач может быть различной и может влиять на ожидаемый результат. Предлагаемый подход применения цепной дроби для нахождения корней квадратных и кубических уравнений позволяет в одном вычислительном процессе сразу вычислить все корни уравнения. Представленный подход демонстрирует новый взгляд на решение квадратных уравнений, расширяя традиционные методики добавлением новых инструментов теории чисел и возможностей современного программирования. Применение цепных дробей позволяет получать точные приближения даже сложных иррациональных корней, повышая точность вычислений и открывая перспективы для дальнейшего развития теоретикоматематического аппарата.
Использование искусственного интеллекта и специализированных библиотек Python значительно повышает удобство реализации и доступность предлагаемого метода для широкого круга пользователей.