Решение квадратного уравнения в комплексных числах - Prolog
Формулировка задачи:
Доброго времени суток. Помогите, пожалуйста, с программой, решающей квадратное уравнение в комплексных числах. Изначально было задание просто составить программу, решающую квадратное уравнение. Однако было добавлено еще условие, что при дискриминанте меньше 0 нужно решить квадратное уравнение в комплексных числах. Вопрос, как это сделать?
Перепробовал много, вот текст программы.
Листинг программы
- predicates
- reshit(integer,integer,integer)
- reply(real,real,real) %Ветви вычислений
- clauses
- reshit(A,B,C):-
- D=B*B-4*A*C, %вычисление дискриминанта
- reply(A,B,D),nl. %запуск разветвлений
- reply(A,B,D):-D<0, W=sqrt(-D),X1=(-B+W*i)/(2*A), X2=(-B-W*i)/(2*A),
- write("Квадратное уравнение имеет корни X1=" ,X1, "X2= ",X2). %если дискриминант <0
- reply(A,B,D):-D=0, %если дискриминант=0
- X=-B/(2*A),write("Квадратное уравнение имеет один общий корень x1,2=",X).
- reply(A,B,D):-D>0,
- W=sqrt(D),
- X1=(-B+W)/(2*A),
- X2=(-B-W)/(2*A),
- write("Квадратное уравнение имеет два корня x1=",X1," i x2=",X2).
- GOAL
- write("Введите значения коэффициентов квадратного уравнения"),nl,
- write("Введите значение коэффициента А "),
- readint(A),
- write("Введите значение коэффициента B "),
- readint(B),
- write("Введите значение коэффициента С "),
- readint(C),
- reshit(A,B,C).
Решение задачи: «Решение квадратного уравнения в комплексных числах»
textual
Листинг программы
- reply(A,B,D):-
- D < 0,
- Im = sqrt(-D)/(2*A),
- Re = -B/(2*A),
- write("Квадратное уравнение имеет корни X1=", Re, "-", Im, "i, X2= ", Re, "+", Im, "i").
Объяснение кода листинга программы
- В первой строке кода используется оператор
<
для сравнения значения переменной D с нулем. - Если D < 0, то выполняется следующая инструкция.
- Значение переменной Im вычисляется с помощью функции sqrt(-D) и делится на 2*A.
- Значение переменной Re вычисляется с помощью формулы -B/(2*A).
- Выполняется функция write, которая выводит на экран сообщение
Квадратное уравнение имеет корни X1=
, за которым следуют значения переменных Re и Im, разделенные знаком-
, а затемi, X2=
и снова значения переменных Re и Im, разделенные знаком+
, и сноваi
. - Код завершается точкой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д