1) Границы интервала [a, b], на котором ищется корень;
2) Точность вычислений еps;
В качестве результатов работы программы представить:
1) Корень уравнения;
2) Значение функции в корне;
3) Количество реально проведенных итераций;
4) График функции f(x).
unit Unit1;Корень находит, проблема вот в чем:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Image1: TImage;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit3: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
function f(x:real):real;
begin
f:=x*x*x*x+x-1;
end;
var a0,b0,eps,fa,fb,x:real;
schet:integer;
begin
schet:=0;
a0:=StrToFloat(Edit1.Text);
b0:=StrToFloat(Edit2.Text);
eps:=StrToFloat(Edit3.Text);
if a0>b0 then begin MessageDlg('Неверные данные', mtError, [mbOK],0);
Edit1.Text:=' ';
Edit2.Text:=' ';
end;
fa:=f(a0); fb:=f(b0);
repeat
x:=(a0+b0)/2;
if fa*f(x)>0 then a0:=x else b0:=x;
schet:=schet+1;
until abs(b0-a0)>=eps;
Label1.Caption:=FloatToStr(x);
Label2.Caption:=FloatToStr(f(x));
Label3.Caption:=FloatToStr(schet);
With Image1.Canvas do
begin
Pen.Color:=clBlack;
Brush.Color:=clWhite;
FillRect(Image1.ClientRect);
MoveTo(0,Image1.Height div 2);
LineTo(Image1.Width, Image1.Height div 2);
MoveTo(Image1.Width div 2, 0);
LineTo(Image1.Width div 2, Image1.Height);
.....
end;
end.
1.Неверно считает количество итераций, всегда выдает равным единице.
2.проблема с графиком: я не понимаю, как, с какими данными его начать строить? буду рад помощи