Насчет первого метода, кажись, должно быть так:
Код:
uses
crt;
const
e: real = 0.01; { точность }
function f (x: real): real;
begin
f := a * x * x * x +
(b - a) * x * x +
(c - b) * x +
(d - c);
end;
var
a, { коэффициент a }
b, { коэффициент b }
c, { коэффициент c }
d, { коэффициент d }
x0, { начало отрезка }
xn, { конец отрезка }
xm: real; { середина отрезка }
begin
clrscr;
write ('a = '); readln (a);
write ('b = '); readln (b);
write ('c = '); readln (c);
write ('d = '); readln (d);
write ('x0 = '); readln (x0);
write ('xn = '); readln (xn);
repeat
xm := (xn + x0) / 2;
if (f1 (x0) * f (xm)) < 0 then xn := xm
else x0 := xm;
until (xn - x0) <= e;
xm := (xn + x0) / 2;
writeln ('result = ', xm : 8 : 6);
readkey;
end.
Насчет второго метода - я не понял, что имеется ввиду - метод итераций для решения систем линейных уравнений? или что?
З.Ы. Вот это -
Цитата:
ax^3+bx^2+cx+d=0
ax^2+bx+c=0
|
- не функции, а уравнения. Так что объясни, это существенно - равенство нулю? а то может просто при каких-нибудь коэффициентах a, b, c и d - оба уравнения будут иметь разные решения, т.е. различные значения x.