23.02.2010, 01:35 | #1 (permalink) |
Member
Регистрация: 06.01.2010
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Метод половинного деления в Delphi
x*x*x*x+4.61*x*x*x-6.45*x*x-29.24*x+24.05=0 Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Button1: TButton; Label2: TLabel; Label3: TLabel; Button2: TButton; procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation function f(x:real):real; begin f:=x*x*x*x+4.61*x*x*x-6.45*x*x-29.24*x+24.05 end; function f1(x:real):real; begin f1:=4*x*x*x+13.83*x*x-12.9*x-29.24 end; function f2(x:real):real; begin f2:=12*x*x+27.66*x-12.9 end; {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var x,x1,x0,a,b,e:real; k:integer; begin e:=0.1; a:=1; b:=2;x:=2; if f(b)*f2(x)>0 then begin k:=0;x1:=b; repeat x0:=x1; k:=k+1; x1:=x0-(f(x0)/f1(x0)); form1.Label1.Caption:=form1.Label1.Caption+intToStr(k)+' '+floattostr(x1)+''+formatfloat('#0.##########',abs(x0-x1))+#13; while abs(x0-x1)<e end; else begin k:=0; x1:=a; repeat x0:=x1; k:=k+1; x1:=x0-(f(x0)/f1(x0)); form1.Label1.Caption:=form1.Label1.Caption+inttostr(k)+' '+floattostr(x1)+' '+formatfloat('#0.######,'abs(x0-x1))+#13; while abs(x0-x1)<e end; form1.Label3.Caption:=form1.Label3.Caption+'k'+' '+' '+' '+' |x0-x1|'; form1.Label2.Caption:=form1.Label2.Caption+'значение функции.---'+formatfloat('#0.##########',f(x1)); end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; end. while abs(x0-x1)<e end; else begin k:=0; x1:=a; Убираю ; все равно недоволен=( Исправьте плиз! |
23.02.2010, 01:35 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Так же решение проблемы можно попробовать найти в одной из похожих тем Метод Ньютона и Хука-Дживса Метод шифрования Rot 66 |
23.02.2010, 01:59 | #2 (permalink) |
一步一步地会到目的
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
|
Цикл repeat заканчивается не словом while, а словом until в остальные особенности не вникал
Последний раз редактировалось MrSTEP; 23.02.2010 в 02:03 |
24.02.2010, 01:06 | #5 (permalink) |
一步一步地会到目的
Регистрация: 09.05.2009
Адрес: Черноземье
Сообщений: 10,939
Записей в дневнике: 10
Сказал(а) спасибо: 140
Поблагодарили 80 раз(а) в 33 сообщениях
Репутация: 28362
|
Будьте внимательнее и смотрите текст ошибок, которые выдает компилятор
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|