IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> решение кубического уравнения
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


в общем пишу курсовик, нужна помощь
задание решение уравнений с одной переменной
линейное уравнение типа ax+b=0
квадратное уравнение ax^2+bx+c=0
были решены, загвоздка в кубическом уравнении x^3+ax^2+bx+c=0
прошу помочь решить, заранее спасибо

вот листинг программы
var a,b,c,d,x1,x2,x3,q,r,t : real;
begin
label14.Caption := '';
label15.Caption := '';
label16.Caption := '';
if radiobutton3.Checked = true then //ax+b=0
begin
a:=strtofloat(edit7.text);
b:=strtofloat(edit8.text);
x1:=-b/a;
label14.Caption :=floattostr (x1);
end
else if radiobutton2.Checked = true then //ax2+bx+c=0
begin
a:=strtofloat(edit4.text);
b:=strtofloat(edit5.text);
c:=strtofloat(edit6.text);
D:=b*b-4*a*c ;
if D>=0 then
begin
x1:=(-b-sqrt(d))/2*a;
x2:=(-b+sqrt(d))/2*a;
label14.Caption := floattostr(x1);
label15.Caption := floattostr(x2);
end
else
label14.Caption := 'уравнение не имеет корней';

end
else if radiobutton1.Checked = true then //x3+ax2+bx+c=0
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
q:=(a*a-3*b)/9;
r:=(2*a*a*a-9*a*b+27*c)/54;
if r*r<q*q*q then
begin
{ t:=arccos(R/sqrt(q*q*q))/3; } //не работает, воспринимает почемуто arccos как переменную
x1:=-2*sqrt(q)*cos(t)-a/3;
x2:=-2*sqrt(q)*cos(t+(2*3.14/3))-a/3;
x3:=-2*sqrt(q)*cos(t-(2*3.14/3))-a/3;
label14.Caption := floattostr(x1);
label15.Caption := floattostr(x2);
label16.Caption := floattostr(x3);

end
else
begin
// дальше честно не знаю, как делать
end;
end;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


ладно, мы не ищем простых решений
вот переделанный код
появилась ошибка "invalid floating point operation"
просьба помочь с решением проблемы!
вот листинг программы
  begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
d:=strtofloat(edit9.text);
p:=-(b*b)/(3*a*a)+c/a;
q:=(2*b*b*b)/(27*a*a*a)-(b*c)/(3*a*a);
a1:=(-q/2)+sqrt((q*q)/4+(p*p*p)/27);
a1:=exp((1/3) * ln(a1));
b1:=(-q/2)-sqrt((q*q)/4+(p*p*p)/27);
b1:=exp((1/3) * ln(b1));
if (q*q)/4+(p*p*p)/27>0 then
begin
x1:=a1+b1;
x2:=-0.5*(a1+b1)+(sqrt(3)/2)*(a1-b1);
x3:=-0.5*(a1+b1)-(sqrt(3)/2)*(a1-b1);
end
else if (q*q)/4+(p*p*p)/27=0 then
begin
x1:=2*a1;
x2:=-a1;
x3:=-a1;
end
else
showmessage('введите корректные значения');

label14.Caption := floattostr(x1);
label15.Caption := floattostr(x2);
label16.Caption := floattostr(x3);
end;


Сообщение отредактировано: BorisON -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 5:35
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name