Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 20:50   #1
Legend18
Новичок
Джуниор
 
Регистрация: 25.04.2010
Сообщений: 1
Вопрос Метод Хорд

Уточнение корней уравнения методом хорд помогите плиз написать прогу по етой теме на языку Delphi!!!!
У меня тут есть код посмотрите плиз где тут ошибки и что надо дописать чтоб код был полностб правилиный!!!!!
вот код
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ExtCtrls, TeeProcs, TeEngine, Chart, Series, StdCtrls,
  TeeFunci;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Chart1: TChart;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Series1: TLineSeries;
    TeeFunction1: TAddTeeFunction;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function  f(a:real):real;
begin
result:=power(a,3)+3*sqr(a)-3;
end;
function f2(a:real):real;
begin
result:=6*a+6;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
x,h,y:real;
i:integer;
begin
Series1.Clear;
h:=6/100;
for i:=0 to 100 do
begin
x:=-4+h*i;
Series1.AddXY(x,f(x),' ',clred);
Stringgrid1.Cells[0,0]:='x';
Stringgrid1.Cells[1,0]:='y';
end;
for i:=1 to 11 do
begin
x:=-6+i;
Stringgrid1.Cells[0,i]:=Floattostr(x);
Stringgrid1.Cells[1,i]:=Floattostr(f(x));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const eps=0.00001;
var
a,b,x_new,x_old:real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
if (f(a)*f2(a)>0) and (f(b)*f2(b)<0) then
begin
x_new:=b;
repeat
x_old:=x_new;
x_new:=x_old-f(x_old)*(x_old-a)/(f(x_old)-f(a))
until abs(x_new-x_old)<eps;
Label1.Caption:='Корень равен:'+FloatToStrF(x_new,ffgeneral,6,2)
end
else
if ((f(a)*f2(a))<0) and (f(b)*f2(b)>0) then
begin
x_new:=a;
repeat
x_old:=x_new;
x_new:=x_old-f(x_old)*(b-x_old)/(f(b)-f(x_old))
until abs(x_new-x_old)<eps;
Label1.Caption:='Корень равен:'+FloattostrF(x_new,ffgeneral,6,2)
end
else
label1.Caption:='Корень отделен не верно!';

end;

end.

Последний раз редактировалось Stilet; 26.04.2010 в 09:24.
Legend18 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод Хорд , Касательных и Половинного деления DieHard Помощь студентам 4 13.09.2011 19:05
Метод хорд и касательных [Турбо Паскаль] mpegable Помощь студентам 6 14.05.2010 18:06
Метод хорд и дихотомии Igorz3000 Помощь студентам 6 16.09.2009 11:38
Метод хорд MaryBlondi Помощь студентам 2 29.05.2009 23:25
Метод хорд. Тейлор AlinAA Помощь студентам 1 26.02.2009 00:31