Лабы / 1
.docxЗадание:
Написать программу (Windows-приложение в Delphi) для вычисления полинома по схеме Горнера (см. свой вариант таблице 1.5).
Отладить программу, используя тестовый пример.
4 |
Код:
var
Form2: TForm2;
a:array [0..50] of real;
n,i,l,x:integer;
P:real;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
n:=memo1.lines.count;
x:=strtoint(edit2.text);
for i:=0 to n-1 do
a[i]:=strtofloat(memo1.Lines[i]);
P:=a[n-1]; //последний
i:=n-2; //предыдущий
while i>=0 do begin
P:=P*x+a[i];
i:=i-1;
end;
edit1.text:=floattostr(P);
end;
end.
Результат:
Блок схема
Начало
Ввод
{ai}1÷n,n,x
P=an,
i=n-1 a0=x
P=ai+xP a0=x
i=0
i=i-1 a0=x
Вывод
P Конец
Задание:
Написать программу для аппроксимации функции, заданной в виде таблицы (таблице 1.1) и представленной в описании работы, в соответствии с условием своего варианта (таблице 1.2 – 1.4). Оформить интерполяционный метод как процедуру-реакцию на событие onClick в Windows-приложении. Для организации ввода исходных данных функции, заданной в виде таблицы, использовать объекты класса TMemo.
Произвести отладку программы.
x |
0 |
0.3 |
0.6 |
0.9 |
1.2 |
1.5 |
1.8 |
2.1 |
y |
1.763 |
1.936 |
2.264 |
2.561 |
2.758 |
3.067 |
3.298 |
3.401 |
2 |
0.62 |
линейная в явном виде () |
Код
var
Form3: TForm3;
n,i:integer;
x,y:array of extended;
k,b,a:extended;
z:real;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
n:=memo1.lines.count;
setlength(x,n);
setlength(y,n);
z:=strtofloat(edit2.text);
for i:=0 to n-1 do begin
x[i]:=strtofloat(memo1.lines[i]);
y[i]:=strtofloat(memo2.lines[i]);
end;
i:=0;
while z>x[i] do begin
i:=i+1;
end;
k:=(y[i]-y[i-1])/(x[i]-x[i-1]);
b:=-x[i-1]*k+y[i-1];
a:=z*k+b;
edit1.Text:=floattostr(a);
end;
end.
Результат:
Блок схема:
{xi}Ni,{yi}N,z
i=0 a0=x
i=i+11 a0=x
z>xi
k=(y[i]-y[i-1])/(x[i]-x[i-1]);
b=-x[i-1]*k+y[i-1];
y=k*z+b
+ -
Вывод
a
Конец