Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Решение уравнения четвёртой степени на Prolog.docx
Скачиваний:
0
Добавлен:
02.01.2026
Размер:
1.12 Mб
Скачать

2. Предикаты определения типа уравнения и выбора метода

• equation_type(A,B,C,D,K,Type) - определяет тип уравнения • solve_equation(A,B,C,D,K) - запускает нужный алгоритм • handle_quartic(A,B,C,D,K) - решение уравнения 4-й степени • handle_cubic(B,C,D,K) - решение кубического уравнения • handle_quadratic(C,D,K) - решение квадратного уравнения • handle_linear(D,K) - решение линейного уравнения • handle_no_solution(K) - случай   при нулевых коэффициентах • handle_any_number - случай 

3. Предикаты для метода хорд (поиск одного корня 4-й степени, a ≠ 0)

• secant_method(A,B,C,D,K, X0, X1, Root) - реализация метода хорд • f(A,B,C,D,K,X,Value) - вычисление значения полинома в точке X • close_enough(X1,X2) - проверка точности • choose_initial_points(A,B,C,D,K,X0,X1) - выбор стартовых приближений

4. Предикаты схемы Горнера (понижение степени)

• horner_division(A,B,C,D,K, Root, B1,C1,D1,K1) - деление на (x - Root) • solve_reduced_cubic(B1,C1,D1,K1) - поиск оставшихся трёх корней • evaluate_polynomial(List, X, Value) - вспомогательная функция

5. Предикаты для решения кубического уравнения (схема Кардано)

• cardano(B,C,D,K, X1,X2,X3) - основной алгоритм Кардано • reduce_cubic(B,C,D,K, P,Q) - приведение к виду  • discriminant(P,Q,Dscr) - вычисление дискриминанта • cardano_three_real(P,Q,X1,X2,X3) - обработка случая D < 0 • cardano_one_real(P,Q,X1,X2,X3) - обработка случая D ≥ 0 • cube_root(Value, Result) - корректный кубический корень

6. Предикаты для решения квадратного уравнения

• solve_quadratic(C,D,K, X1,X2) - решение квадратного уравнения • discriminant_quadratic(C,D,K,Disc) - вычисление  • safe_sqrt(Value, Result) - безопасное извлечение корня

7. Предикаты для решения линейного уравнения

• solve_linear(D,K, X) - вычисляет 

8. Вспомогательные предикаты

• is_zero(Value) - проверка числа на ноль • not_zero(Value) - отрицательная проверка • round_value(Value, Result) - округление результата • abs_value(X,Abs) - модуль числа

Блок-схемы

Рисунок 1. Блок схема приложения.

Рисунок 2. Блок схема решения линейного уравнения.

Рисунок 3. Блок схема решения квадратного уравнения.

Рисунок 4. Блок схема метода Кардано.

Рисунок 5. Метод Хорд

Рисунок 6. Схема Горнера.

Проверка функционала программы

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

При коэффициентах 0,0,0,0,0

Рисунок 7. Результат программы при 0,0,0,0,0

При коэффициентах 0,0,0,0,0.5

Рисунок 8. Результат программы при 0,0,0,0,5

При коэффициентах 0,0,0,2.0,-4.0

Рисунок 9. Результат программы при 0,0,0,2.0,-4.0

При коэффициентах 0,0,1,-5.0,6.0

Рисунок 10. Результат программы при 0,0,1.0,-5.0,6.0

При коэффициентах 0,0,1.0,4.0,5.0

Рисунок 11. Результат программы при 0,0,1.0,4.0,5.0

При коэффициентах 0,1.0,-6.0,11.0,-6.0

Рисунок 12. Результат программы при 0,1.0,-6.0,11.0,-6.0

При коэффициентах 0,1.0,-3.0,3.0,-1.0

Рисунок 13. Результат программы при 0,1.0,-3.0,3.0,-1.0

При коэффициентах 0,1.0,0,1.0,0

Рисунок 14. Результат программы при 0,1.0,0,1.0,0

При коэффициентах 0,1.0,0,1.0,0

Рисунок 15. Результат программы при 0,1.0,-3.0,3.0,-1.0

При коэффициентах 1.0,-10.0,35.0,-50.0,24.0

Рисунок 15. Результат программы при 1.0,-10.0,35.0,-50.0,24.0