Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.03.2012, 15:17
BinguelBinguel BinguelBinguel вне форума
Прохожий
 
Регистрация: 28.10.2011
Сообщения: 10
Репутация: 10
По умолчанию Линейная Интерполяция

Добого времени суток, очередная проблема, опять с делфи, и опять как обычно накосячила с кодом. В общем, идея задания такова, что дана таблица значения Х и У, и даны два значения Х0, к которым нужно найти У0 соответственно. Составила блок схему - идея ясна, начала писать код, с горем пополам что-то написала, но он не считает! Помогите разобраться.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
unit Unit_int;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Edit1: TEdit;
    Edit2: TEdit;
    GroupBox2: TGroupBox;
    Edit3: TEdit;
    Label1: TLabel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
matr1 = array[0..9] of double;
Matr2 = array [0..9] of double;
 const
 X:matr1 =(-1.35,-1.05,-0.75,-0.45,-0.15,0.15,0.45,0.75,1.05,1.35);
 Y:matr2 =(-0.41,-0.25,-0.47,-0.41,-0.15,0.15,0.49,1.03,1.85,2.29);
 
var
  Form1: TForm1;
 
 
implementation
function Find (X:matr1; x0:real):integer;
var
 i:integer;
  begin
    i:=0;
     while X[i]< x0 do
       i:=i+1;
       find:=i;
   end;
 
Function Lint(x0: real):real;
 var
   X:matr1;
   Y:matr2;
   k,c,Ya,Yb,Xa,Xb: real;
   A,B:integer;
     begin
 
     B:=find(X,x0);
      A:=B-1;
 
      Xa:=X[A];
      Xb:=X[b];
      Ya:= Y[A];
      Yb:= Y[b];
 
       k:= (Yb-Ya)/(Xb-Xa);
       c:= Ya-k*Xa;
       Lint:= k*x0+c;
     end;
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var
 i:integer;
begin
decimalseparator:='.';
 for i:=0 to 9 do
  begin
    StringGrid1.Cells[i+1,0]:=floattostr(X[i]);
    StringGrid1.Cells[i+1,1]:=floattostr(Y[i]);
  end;
 
   StringGrid1.Cells[0,0]:='    x';
   StringGrid1.Cells[0,1]:='    y';
end;
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
var
 x0,y0, Xa,Xb,Ya,Yb: real;
 A,B: integer;
begin
   if RadioButton1.Checked then
      x0 := strtofloat(edit1.text);
    if RadioButton2.Checked then
      x0:= strtofloat(edit2.text);
 
     // B:=find(X,x0);
      //A:=B-1;
 
     { Xa:=X[A];
      Xb:=X[b];
      Ya:= Y[A];
      Yb:= Y[b]; }
 
     y0:=Lint(x0);
       //y0:=floattostrf(edit3.text);
       edit3.Text:=floattostrF(y0,fffixed,6,4);
end;
 
end.
Вложения
Тип файла: zip Interpolacija.zip (239.7 Кбайт, 7 просмотров)
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025