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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2009, 18:47   #1
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию уравнение методом итераций

Здравствуйте программисты! Нужно решить уравнение методом итераций. Сделал на Делфи, скажите пожалуйста, правильно ли программа написана. Зараннее благодарю за ответ.
Вот исходник.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
x1,x2,x3,x4,k1,k2,k3,k4,r1,r2,r3,r4,l1,l2,l3,l4: real;
S1,S2,S3,S4:string;
begin
//Ïðåîáðàçóåì ñòðîêîâîé òèï â òèï ôëîàò äëÿ
//ââîäà ÷èñåë òèïà ôëîàò, ââîäèì õ1,õ2,õ3,õ4.
x1:=StrToFloat(Edit1.Text);
x2:=StrToFloat(Edit2.Text);
x3:=StrToFloat(Edit3.Text);
x4:=StrToFloat(Edit4.Text);


r1:=0.01*x1+0.02*x2-0.62*x3+0.08*x4-1.3;
r2:=0.03*x1+0.28*x2+0.33*x3-0.07*x4+1.1;
r3:=0.09*x1+0.13*x2+0.42*x3+0.28*x4-1.7;
r4:=0.19*x1-0.23*x2+0.08*x3+0.37*x4+1.5;

x1:=r1;
x2:=r2;
x3:=r3;
x4:=r4;

 STR(x1:6:0,S1);
 STR(x2:6:0,S2);
 STR(x3:6:0,S3);
 STR(x4:6:0,S4);
 
Edit5.Text:=S1;
Edit6.Text:=S2;
Edit7.Text:=S3;
Edit8.Text:=S4;

end;

procedure Iter;
var n:integer;
    x0,x,eps,d,y,z,c:real;
begin
 n:=0;
 //x0:=-1;
 c:=-0.1;
 x:=x0;
 //Çíà÷åíèå ýïñèëîí
 eps:=1e-3;
  repeat
  y:=x+c*(exp(x)+x);
  z:=x;
  //Ñ÷¸ò÷èê n+1
  inc (n);

  Form1.Memo1.Lines.Add (Inttostr(n) + '; ' + Floattostr(x) + '; ' + Floattostr(y) + '; ' + FloatTostr (abs(y-x)) + '; ' + FloatTostr(abs(exp(y)+y)));
  x:=y;
 until (abs(z-x)<=eps) and (abs(exp(x)+x)<=d);
 
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
//Âûçûâàåì ôóíêöèþ Iter
Iter;
end;

end.
Golovastik вне форума Ответить с цитированием
Старый 22.06.2009, 10:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если программа выдает правильный результат то значит она правильно написана.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2009, 15:57   #3
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

я только не мог понять чему равно d в этом выражении.
Цитата:
until (abs(z-x)<=eps) and (abs(exp(x)+x)<=d);
Ему в процедуре вроде ничего не присваивается.
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как решить нелинейное уравнение методом простых итераций??? Bonifaciy Помощь студентам 3 13.11.2008 17:30
текст программы для решения нелинейного уравнения методом простых итераций Dyst Помощь студентам 2 14.05.2008 22:00
решение уравнение методом подбора, вопрос Ceprey Общие вопросы C/C++ 1 02.05.2008 16:38
Уравнение метода итераций SPQR Помощь студентам 2 12.11.2007 01:26