Предмет: Информатика, автор: x4san0v

Как написать на лазарусе программу, которая решает кубические уравнения?

Приложения:

Ответы

Автор ответа: infosecuari
1

Q:=(a*a-3*b)/9;

R:=(2*a*a*a-9*a*b+27*c)/54;

S:=Q*Q*Q-R*R;

if S>0

then begin

n:= (arccos(R/sqrt(a*a*a)))/3;

x1:=-2*sqrt(Q)*cos(n) - a/3;

x2:=-2*sqrt(Q)*cos(n + (2*Pi)/3) - a/3;

x3:=-2*sqrt(Q)*cos(n - (2*Pi)/3) - a/3;

Memo1.Text:='X1 = ' + FloatToStr(x1) + #13 +

'X2 = ' + FloatToStr(x2) + #13 + 'X3 = ' + FloatToStr(x3);

end;

if (S<0) and (Q>0)

then begin

n:=(arch((abs(R)/sqrt(Q*Q*Q))))/3;

x1:=-2*sgn(R)*sqrt(Q)*ch(n)-a/3;

Memo1.Text:='X1 = ' + FloatToStr(x1) + #13 +

'X2 = ' + FloatToStr(sgn(R)*sqrt(Q)*ch(n)) + 'i' + FloatToStr(sqrt(3)*sqrt(Q)*sh(n)) +

#13 + 'X3 = ' + FloatToStr(sgn(R)*sqrt(Q)*ch(n)) + '-i' + FloatToStr(sqrt(3)*sqrt(Q)*sh(n));

end;

if (S<0) and (Q<0)

then begin

n:=(arch((abs(R)/sqrt(abs(Q*Q*Q)))))/3;

x1:=-2*sgn(R)*sqrt(abs(Q))*ch(n)-a/3;

Memo1.Text:='X1 = ' + FloatToStr(x1) + #13 +

'X2 = ' + FloatToStr(sgn(R)*sqrt(abs(Q))*ch(n)) + 'i' + FloatToStr(sqrt(3)*sqrt(abs(Q))*sh(n)) +

#13 + 'X3 = ' + FloatToStr(sgn(R)*sqrt(abs(Q))*ch(n)) + '-i' + FloatToStr(sqrt(3)*sqrt(abs(Q))*sh(n));

end;

if (S<0) and (Q=0)

then begin

x1:=PowerFn(c-((a*a*a)/27),1/3);

Memo1.Text:='X1 = ' + FloatToStr(x1) + #13 +

'X2 = ' + FloatToStr((-a + x1)/2) + 'i/2' + FloatToStr(sqrt(abs((a-3*x1)*(a+x1)-4*b))) +

#13 + 'X3 = ' + FloatToStr((-a + x1)/2) + '-i/2' + FloatToStr(sqrt(abs((a-3*x1)*(a+x1)-4*b)));

end;

if S=0

then begin

x1:=-2*PowerFn(R,1/3) - a/3;

x2:=PowerFn(R,1/3) - a/3;

Memo1.Text:='X1 = ' + FloatToStr(x1) +

#13 + 'X2 = ' + FloatToStr(x2) +

#13 + 'X3 = ' + FloatToStr(x3);

end;

Похожие вопросы
Предмет: Русский язык, автор: evshangina67