Реферат Курсовой проект по Delphi 7
Работа добавлена на сайт bukvasha.net: 2015-10-28Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
от 25%
договор
1.
2. Даны натуральные m,nи матрица Am×n. Найти матрицу Сm×n, значение каждого элемента которой (cij, где i=1,2,…,m,j=1,2,…,n) определяется по формуле Су = sj ■ a у, где sj - среднее арифметическое значение всех элементов j-ого столбца матрицы A.
procedure TForm1.Button1Click(Sender: TObject);
begin
m := SpinEdit1.value; считываем значение m
n := SpinEdit2.value; считываем значение n
z:=false;
for i:=1 to m do
for j:=1 to n do
begin
val(stringgrid1.Cells[j-1, i-1], a[i,j], code); //
считываем
значения
элементов
иассива
A
if code > 0 then z:=true;
end;
if z then showmessage('
Введено
некорректное
значение
')
else
begin
for j:=1 to n do
begin
s[j]:=0; //
обнуление
суммы
for i:=1 to m do
s[j]:=s[j]+a[i,j]; //накопление суммы по столбцам
s[j]:=s[j]/m; //рассчет среднего арифметического по столбцам
end;
for i:=1 to m do
for j:=1 to n do
c[i,j]:=s[j]+a[i,j]; //
рассчет
элементов
массива
C
for i:=1 to m do
for j:=1 to n do
StringGrid2.Cells[j-1,i-1] := floattostr(c[i,j]); //
Вывод
элементов
массива
С
end;
3. Численные методы уточнения корней нелинейного уравнения.
Задание.
Уточнить корни уравнения хг -В-х2 +С-Х — £) = О на отрезке [-5.00, 5.00], при h=0.5 и € = 0.01
-2.703 -8.459 9.807
procedure iterat; //
метод
простой
итерации
var x,dh,B:real;
i:integer;
begin
B
:=-0.01;
i
:=1;
x:=korni[3]; //начальное приближение
repeat //
цикл
рассчёта
form1.StringGrid4.RowCount:=i+1;
dh:=func(x)*B;
form1.StringGrid4.Cells[0,i]:=inttostr(i); //
Вывод
итераций
form1.StringGrid4.Cells[1,i]:=floattostrF(x,ffFixed,5,7); // ...
form1.StringGrid4.Cells[2,i]:=floattostrF(func(x),ffFixed,10,7); //...
form1.StringGrid4.Cells[3,i]:=floattostrF(dh,ffFixed,10,7); //...
form1.StringGrid4.Cells[4,i]:=floattostrF(x+dh,ffFixed,10,7); //...
inc(i);
x:=x+dh;
until abs(dh/B)<eps;
end;
procedure polovinnoedel; //
метод
половинного
деления
var a,b,x:real;
i:integer;
begin
i:=1;
b:=korni[1]; //задание правой границы интервала поиска
a:=b-h; //задание левой границы интервала поиска
x:=(b+a)/2; //середина интервала
form1.StringGrid2.Cells[0,i]:=inttostr(i); //Вывод первой итерации
form1.StringGrid2.Cells[1,i]:=floattostr(a); //...
form1.StringGrid2.Cells[2,i]:=floattostr(x); //...
form1.StringGrid2.Cells[3,i]:=floattostr(b); //...
form1.StringGrid2.Cells[4,i]:=floattostr(func(a)); //...
form1.StringGrid2.Cells[5,i]:=floattostr(func(x)); //...
form1.StringGrid2.Cells[6,i]:=floattostr(func(b)); //...
form1.StringGrid2.Cells[7,i]:=floattostr(abs(b-a)); //...
while (abs(b-a)/2)>eps do begin //
Цикл
рассчёта
итерации
inc(i);
form1.StringGrid2.RowCount:=i+1; //изменение числа строк в таблице вывода
if (func(a)*func(x))<0 then //условия сокращения интервала
b:=x
else
a:=x;
x:=(b+a)/2;
form1.StringGrid2.Cells[0,i]:=inttostr(i); //
Вывод
итераций
form1.StringGrid2.Cells[1,i]:=floattostr(a); //...
form1.StringGrid2.Cells[2,i]:=floattostr(x); //...
form1.StringGrid2.Cells[3,i]:=floattostr(b); //...
form1.StringGrid2.Cells[4,i]:=floattostr(func(a)); //...
form1.StringGrid2.Cells[5,i]:=floattostr(func(x)); //...
form1.StringGrid2.Cells[6,i]:=floattostr(func(b)); //...
form1.StringGrid2.Cells[7,i]:=floattostr(abs(b-a)); //...
end;
end;
procedure kas; //
метод
касательной
var x,dh:real;
i:integer;
begin
i:=1;
x:=korni[2]; //задание начального приближения
repeat //
цикл
рассчёта
итераций
form1.StringGrid3.RowCount:=i+1;
dh:=func(x)/funcproizv(x);
form1.StringGrid3.Cells[0,i]:=inttostr(i); //
Вывод
итераций
form1.StringGrid3.Cells[1,i]:=floattostrF(x,ffFixed,5,7); //...
form1.StringGrid3.Cells[2,i]:=floattostrF(func(x),ffFixed,10,7); //...
form1.StringGrid3.Cells[3,i]:=floattostrF(funcproizv(x),ffFixed,10,7); //...
form1.StringGrid3.Cells[4,i]:=floattostrF(dh,ffFixed,10,7); //...
form1.StringGrid3.Cells[5,i]:=floattostrF(x-dh,ffFixed,10,7); //...
inc(i);
x:=x-dh;
until abs(dh)<eps;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
B:=-2.703; //задание коэффициентов уравнения
C:=-8.459; //...
D:=9.807; //...
StringGrid1.Cells[0,0]:='i'; //вывод статических надписей таблиц
StringGrid1.Cells[0,1]:='x'; //...
StringGrid1.Cells[0,2]:='f(x)'; //
StringGrid2.Cells[0,0]:='i'; //
StringGrid2.Cells[1,0]:='a'; //
StringGrid2.Cells[2,0]:='x=(b+a)/2'; //
StringGrid2.Cells[3,0]:='b'; //
StringGrid2.Cells[4,0]:='f(a)'; //
StringGrid2.Cells[5,0]:='f(x)'; //
StringGrid2.Cells[6,0]:='f(b)'; //
StringGrid2.Cells[7,0]:='|b-a|'; //
StringGrid3.Cells[0,0]:='i'; //
StringGrid3.Cells[1,0]:='x(i-1)'; //
StringGrid3.Cells[2,0]:='f(x(i-1))'; //
StringGrid3.Cells[3,0]:='f''(x(i-1))'; //
StringGrid3.Cells[4,0]:='h'; //
StringGrid3.Cells[5,0]:='x(i)=x(i-1)-h'; //
StringGrid4.Cells[0,0]:='i'; //
StringGrid4.Cells[1,0]:='x(i-1)'; //
StringGrid4.Cells[2,0]:='f(x(i-1))'; //
StringGrid4.Cells[3,0]:='h=B*f(x(i-1))'; //
StringGrid4.Cells[4,0]:='x(i)=x(i-1)+h'; //
start:=-5; //задание левой границы поиска
finish:=5; //задание правой границы поиска
h:=0.5; //шаг
eps:=0.01; //точность
Label2.Caption:=Label2.Caption+FloatToStr(B); //вывод коэффициентов уравнения
Label3.Caption:=Label3.Caption+FloatToStr(C); //...
Label4.Caption:=Label4.Caption+FloatToStr(D); //...
end;
procedure TForm1.Button1Click(Sender: TObject); //
запуск
необходимых
для
рассчёта
процедур
begin
poisk;
polovinnoedel;
kas;
iterat;
end;
procedure poisk; //процедура отделения корней
var i,k:integer;
x:real;
begin
i:=0;
k:=1; //задание начального значения х
x:=start;
form1.StringGrid1.Cells[k,0]:=inttostr(k); //
вывод
первого
итервала
form1.StringGrid1.Cells[k,1]:=floattostr(x); //...
form1.StringGrid1.Cells[k,2]:=floattostr(func(x)); //...
while x<finish do begin //
цикл
отделения
корней
...
inc(k);
form1.StringGrid1.ColCount:=k+1;
form1.StringGrid1.Cells[k,0]:=inttostr(k);
form1.StringGrid1.Cells[k,1]:=floattostr(x+h);
form1.StringGrid1.Cells[k,2]:=floattostr(func(x+h));
if (func(x)/(abs(func(x))))<>(func(x+h)/(abs(func(x+h)))) then begin //
условие
определения
интервала
,
содержащего
корень
inc(i);
korni[i]:=x+h; //формирование массива корней
end;
x:=x+h; //смещение к следующему интервалу
end;
end;
end.
4. Матричные операции.
Вычислите значение матричного выражения R. Сохоаните пгюмежуточные вычисления.
Составите программу, для вычисления R
Проведите расчет по программе и сравните результаты. Операция sled([MarpHna]) - сумма
диагональных элементов матрицы.
//задание элементов матрицы А
A[1,1]:=5;
A[1,2]:=6;
A[1,3]:=7;
A[2,1]:=9;
A[2,2]:=4;
A[2,3]:=7;
//Вывод элементов матрицы А
for
i
:=1
to
2
do
for j:=1 to 3 do
StringGrid1.Cells[j-1,i-1] := inttostr(A[i,j]);
//задание элементов матрицы В
B[1,1]:=3;
B[1,2]:=3;
B[2,1]:=1;
B[2,2]:=6;
B[3,1]:=4;
B[3,2]:=1;
//Вывод элементов матрицы В
for
i
:=1
to
3
do
for j:=1 to 2 do
StringGrid2.Cells[j-1,i-1] := inttostr(B[i,j]);
//задание элементов вектора с
c[1]:=3;
c[2]:=1;
//
Вывод
элементов
вектора
c
for i:=1 to 2 do
StringGrid3.Cells[0,i-1] := inttostr(c[i]);
//задание элементов вектора d
d[1]:=8;
d[2]:=8;
d[3]:=6;
//Вывод элементов вектора d
for i:=1 to 3 do
StringGrid4.Cells[0,i-1] := inttostr(d[i]);
//Рассчет и вывод элементов вектора RV1
for i:=1 to 3 do
begin
RV1[i]:=d[i];
StringGrid8.Cells[i-1,0] := inttostr(RV1[i]);
end;
//Рассчет и вывод элементов вектора RV2
for i:=1 to 2 do
begin
RV2[i]:=0;
for k:=1 to 3 do
RV2[i] := RV2[i] + RV1[k]*B[k,i];
StringGrid7.Cells[i-1,0] := inttostr(RV2[i]);
end;
//Рассчет и вывод элементов вектора RV3
for i:=1 to 2 do
begin
RV3[i]:=0;
for k:=1 to 3 do
RV3[i] := RV3[i] + A[i,k]*d[k];
StringGrid9.Cells[0,i-1] := inttostr(RV3[i]);
end;
//Рассчет и вывод элементов вектора RV4
for i:=1 to 2 do
begin
RV4[i]:=RV3[i];
StringGrid10.Cells[i-1,0] := inttostr(RV4[i]);
end;
//Рассчет и вывод элементов вектора RV5
for i:=1 to 2 do
begin
RV5[i]:=RV2[i]-RV4[i];
StringGrid11.Cells[i-1,0] := inttostr(RV5[i]);
end;
//Рассчет и вывод элементов вектора RV6
for i:=1 to 2 do
begin
RV6[i]:=c[i];
StringGrid12.Cells[i-1,0] := inttostr(RV6[i]);
end;
//Рассчет и вывод R1 - нормы вектора RV5
R1:=0;
for i:=1 to 2 do
R1:=R1 + sqr(RV5[i]);
R1:=sqrt(R1);
Label7.Caption := 'R1 = ||RV5|| = ' + floattostr(R1);
//Рассчет и вывод R1 - нормы вектора RV6
R2:=0;
for i:=1 to 2 do
R2:=R2 + sqr(RV6[i]*c[i]);
R2:=sqrt(R2);
Label8.Caption := 'R2 = cT * c = ' + floattostr(R2);
//Рассчет и вывод R - конечного результата
R:=R1-R2;
Label9.Caption := 'R = R1 - R2 = ' + floattostr(R);
5. Обращение матриц.
-2.500 -0.500 1.500
0.500 -3.500 -2.500
0.500 1.500 2.500
//Первая часть шага : деление всех элеметов каждой строки на диагональный элемент первой матрицы из этой строки
procedure part1;
begin
v:=a[i,i];
for j:=1 to 3 do
begin
b[i,j]:=b[i,j]/v; //
для
первой
матрицы
a[i,j]:=a[i,j]/v; //
для
второй
матрицы
end;
end;
//Вторая часть шага : вычитание из всех строк строки содержащей единицу на главной диагонали, домноженной на элемент того же столбца соответствующей строки
procedure part2;
begin
for k:=1 to 3 do
begin
if (k <> i) then
begin
v:=a[k,i];
for j:=1 to 3 do
begin
a[k,j]:=a[k,j]-a[i,j]*v;
b[k,j]:=b[k,j]-b[i,j]*v
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
button2.Enabled:=true;
//Задание исходных значений первой матрицы
a[1,1]:=-2.5;
a[1,2]:=-0.5;
a[1,3]:=1.5;
a[2,1]:=0.5;
a[2,2]:=-3.5;
a[2,3]:=-2.5;
a[3,1]:=0.5;
a[3,2]:=1.5;
a[3,3]:=2.5;
//Задание исходных значений второй матрицы
b[1,1]:=1;
b[1,2]:=0;
b[1,3]:=0;
b[2,1]:=0;
b[2,2]:=1;
b[2,3]:=0;
b[3,1]:=0;
b[3,2]:=0;
b[3,3]:=1;
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid1.Cells[j-1,k-1]:=floattostr(a[k,j]);
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid2.Cells[j-1,k-1]:=floattostr(b[k,j]);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
button2.Enabled:=false;
i:=1;//
Первый
шаг
part1;//
Первая
часть
шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid3.Cells[j-1,k-1]:=floattostr(a[k,j]);
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid4.Cells[j-1,k-1]:=floattostr(b[k,j]);
part2;//Вторая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid5.Cells[j-1,k-1]:=floattostr(a[k,j]);
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid6.Cells[j-1,k-1]:=floattostr(b[k,j]);
i:=2;//Второй шаг
part1;//Первая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid7.Cells[j-1,k-1]:=floattostr(a[k,j]);
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid8.Cells[j-1,k-1]:=floattostr(b[k,j]);
part2;//Первая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid9.Cells[j-1,k-1]:=floattostr(a[k,j]);
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid10.Cells[j-1,k-1]:=floattostr(b[k,j]);
i:=3;//Первый шаг
part1;//Первая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid11.Cells[j-1,k-1]:=floattostr(a[k,j]);
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid12.Cells[j-1,k-1]:=floattostr(b[k,j]);
part2;//Второй шаг
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid13.Cells[j-1,k-1]:=floattostr(a[k,j]);
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid14.Cells[j-1,k-1]:=floattostr(b[k,j]);
end;
6.
Погрешность вычислений
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Image5: TImage;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
GroupBox2: TGroupBox;
Image6: TImage;
Image7: TImage;
Label2: TLabel;
Image8: TImage;
Label3: TLabel;
Image9: TImage;
Image10: TImage;
Label4: TLabel;
Panel1: TPanel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function Yfunc(yx1,yx2,yx3:real):real;
function deltafunc(dx1,dx2,dx3,ddx:real):real;
var
Form1: TForm1;
y,x1,x2,x3,dx,dy,sigmaY:real;
implementation
{$R *.dfm}
function
Yfunc
(
yx
1,
yx
2,
yx
3:
real
):
real
; //нахождение значения заданной функции
begin
result
:=(
yx
1*
yx
1)/(
yx
2*
yx
2+
yx
3)+
yx
1/
yx
2; //заданная функция
end;
function deltafunc(dx1,dx2,dx3,ddx:real):real; //рассчёт абсолютной погрешности
begin
result
:=(
abs
(2*
dx
1/(
dx
2*
dx
2+
dx
3)+1/
dx
2)+
abs
(-2*
dx
1*
dx
1*
dx
2/((
dx
2*
dx
2+
dx
3)*(
dx
2*
dx
2+
dx
3))-
dx
1/(
dx
2*
dx
2))+
abs
(-
dx
1*
dx
1/((
dx
2*
dx
2+
dx
3)*(
dx
2*
dx
2+
dx
3))))*
ddx
; //функция абсолютной погрешности через частные производные по переменным
end;
procedure TForm1.Button1Click(Sender: TObject); //запуск вычислений на исполнение
begin
dy
:=
deltafunc
(
x
1,
x
2,
x
3,
dx
); //нахождение абсолютной погрешности
Label
2.
Caption
:=
FloatToStrF
(
dy
,
ffFixed
,10,10); //вывод абс. погрешности
y
:=
Yfunc
(
x
1,
x
2,
x
3); //нахождение значения функции
Label3.Caption:=FloatToStrF(y,ffFixed,10,10); //его вывод
sigmaY
:=
dy
/
y
; //нахождение относительной погрешности
Label4.Caption:=FloatToStrF(sigmaY,ffFixed,10,10); //вывод его
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//задание значений переменных
x
1:=1.2; //...
x
2:=1.5; //...
x
3:=1.8; //погрешность значений переменных
dx
:=0.05;
end
;
end
.
7. Дифференциальные уравнения
Найти решение задачи Коши для дифференциального уравнения первого порядка на равномерной сетке отрезка (a,b) один раз с числом разбиения отрезка n=5, другой - с числом разбиения отрезка n=10 методом Эйлера и модифицированным методом Эйлера. Результаты представить в виде таблиц, а также отобразить на графике.
8 | у' + 2ху-хе'х2 | yLo=o | 0<х<1 | 1 2 −x2 |
function
f
(
fx
,
fy
:
real
):
real
; //рассчёт функции - производной
procedure rasschot;
var
Form1: TForm1;
y0,a,b:real;
implementation
{$R *.dfm}
procedure
rasschot
; //процедура расчёта и вывода
var h,x,y,ynext,fxy,fpol,ytheor,xpol,ypol:real;
i,n:integer;
begin
Form1.Series1.Clear; //очистка графиков
Form1.Series2.Clear; //...
Form1.Series3.Clear; //...
Form1.Series4.Clear; //...
Form1.Series5.Clear; //...
n
:=5; //метод Эйлера с 5 интервалами
h
:=(
b
-
a
)/
n
; //шаг
y
:=
y
0; //начальное значение
for
i
:=0
to
n
do
begin
//цикл рассчёта по методу
x:=i*h;
fxy:=f(x,y);
ynext:=y+h*fxy;
ytheor
:=
thy
(
x
);
Form
1.
Series
2.
AddXY
(
x
,
y
); //добавление точки на графике
Form
1.
StringGrid
1.
RowCount
:=
i
+2; //увеличение числа строк в таблице
Form1.StringGrid1.Cells[0,i+1]:=IntToStr(i); //вывод результатов
Form1.StringGrid1.Cells[1,i+1]:=FloatToStrF(x,ffFixed,7,7); //...
Form1.StringGrid1.Cells[2,i+1]:=FloatToStrF(y,ffFixed,7,7); //...
Form1.StringGrid1.Cells[3,i+1]:=FloatToStrF(fxy,ffFixed,7,7); //...
Form1.StringGrid1.Cells[4,i+1]:=FloatToStrF(ynext,ffFixed,7,7); //...
Form1.StringGrid1.Cells[5,i+1]:=FloatToStrF(ytheor,ffFixed,7,7); //...
y
:=
ynext
;
end
;
n
:=10; //метод Эйлера с 10 интервалами
h
:=(
b
-
a
)/
n
; //шаг
y
:=
y
0; //начальное значение
for i:=0 to n do begin //цикл рассчёта по методу
x:=i*h;
fxy:=f(x,y);
ynext:=y+h*fxy;
ytheor
:=
thy
(
x
);
Form
1.
Series
3.
AddXY
(
x
,
y
); //добавление точки на графике
Form
1.
StringGrid
3.
RowCount
:=
i
+2; //увеличение числа строк в таблице
Form1.StringGrid3.Cells[0,i+1]:=IntToStr(i); //вывод результатов
Form1.StringGrid3.Cells[1,i+1]:=FloatToStrF(x,ffFixed,7,7); //...
Form1.StringGrid3.Cells[2,i+1]:=FloatToStrF(y,ffFixed,7,7); //...
Form1.StringGrid3.Cells[3,i+1]:=FloatToStrF(fxy,ffFixed,7,7); //...
Form1.StringGrid3.Cells[4,i+1]:=FloatToStrF(ynext,ffFixed,7,7); //...
Form1.StringGrid3.Cells[5,i+1]:=FloatToStrF(ytheor,ffFixed,7,7); //...
y
:=
ynext
;
end
;
//улучшенный метод Эйлера с 5 интервалами
n:=5;
h:=(b-a)/n;
y:=y0;
for i:=0 to n do begin
x:=i*h;
fxy:=f(x,y);
ypol:=y+h/2*fxy;
xpol:=x+h/2;
fpol:=f(xpol,ypol);
ynext:=y+h*fpol;
ytheor:=thy(x);
Form1.Series4.AddXY(x,y);
Form1.StringGrid2.RowCount:=i+2;
Form1.StringGrid2.Cells[0,i+1]:=FloatToStrF(x,ffFixed,7,7);
Form1.StringGrid2.Cells[1,i+1]:=FloatToStrF(y,ffFixed,7,7);
Form1.StringGrid2.Cells[2,i+1]:=FloatToStrF(fxy,ffFixed,7,7);
Form1.StringGrid2.Cells[3,i+1]:=FloatToStrF(ypol,ffFixed,7,7);
Form1.StringGrid2.Cells[4,i+1]:=FloatToStrF(fpol,ffFixed,7,7);
Form1.StringGrid2.Cells[5,i+1]:=FloatToStrF(ynext,ffFixed,7,7);
Form1.StringGrid2.Cells[6,i+1]:=FloatToStrF(ytheor,ffFixed,7,7);
y
:=
ynext
;
end
;
//улучшенный метод Эйлера с 10 интервалами
n:=10;
h:=(b-a)/n;
y:=y0;
for i:=0 to n do begin
x:=i*h;
fxy:=f(x,y);
ypol:=y+h/2*fxy;
xpol:=x+h/2;
fpol:=f(xpol,ypol);
ynext:=y+h*fpol;
ytheor:=thy(x);
Form1.Series1.AddXY(x,ytheor);
Form1.Series5.AddXY(x,y);
Form1.StringGrid4.RowCount:=i+2;
Form1.StringGrid4.Cells[0,i+1]:=FloatToStrF(x,ffFixed,7,7);
Form1.StringGrid4.Cells[1,i+1]:=FloatToStrF(y,ffFixed,7,7);
Form1.StringGrid4.Cells[2,i+1]:=FloatToStrF(fxy,ffFixed,7,7);
Form1.StringGrid4.Cells[3,i+1]:=FloatToStrF(ypol,ffFixed,7,7);
Form1.StringGrid4.Cells[4,i+1]:=FloatToStrF(fpol,ffFixed,7,7);
Form1.StringGrid4.Cells[5,i+1]:=FloatToStrF(ynext,ffFixed,7,7);
Form1.StringGrid4.Cells[6,i+1]:=FloatToStrF(ytheor,ffFixed,7,7);
y:=ynext;
end;
function thY(tx:real):real; //
рассчёт
значений
теоретической
функции
begin
result:=tx*tx*exp(-tx*tx)/2;
end;
function f(fx,fy:real):real; //рассчёт значений производной
begin
result:=fx*exp(fx*fx)-2*fx*fy;
end
;
procedure
TForm
1.
FormCreate
(
Sender
:
TObject
); //задание начальных значений и вывод статических надписей
begin
y
0:=0; //начальное приближение функции
a
:=0; //границы отрезка решения
b
:=1; //...
StringGrid
1.
Cells
[0,0]:='
i
'; //вывод статических надписей
StringGrid1.Cells[1,0]:=' x(i)'; //...
StringGrid1.Cells[2,0]:=' y(i)'; //...
StringGrid1.Cells[3,0]:=' f(x,i)'; //...
StringGrid1.Cells[4,0]:=' y(i+1)'; //...
StringGrid1.Cells[5,0]:=' y(i) теор.'; //...
StringGrid2.Cells[0,0]:=' x(i)'; //...
StringGrid2.Cells[1,0]:=' y(i)'; //...
StringGrid2.Cells[2,0]:='f(x,i)';
StringGrid2.Cells[3,0]:=' y(i+1/2)';
StringGrid2.Cells[4,0]:='f(x(i+1/2),y(i+1/2))';
StringGrid2.Cells[5,0]:=' y(i+1)';
StringGrid2.Cells[6,0]:=' y(i) теор.';
StringGrid3.Cells[0,0]:=' i';
StringGrid3.Cells[1,0]:=' x(i)';
StringGrid3.Cells[2,0]:=' y(i)';
StringGrid3.Cells[3,0]:=' f(x,i)';
StringGrid3.Cells[4,0]:=' y(i+1)';
StringGrid3.Cells[5,0]:=' y(i) теор.';
StringGrid4.Cells[0,0]:=' x(i)';
StringGrid4.Cells[1,0]:=' y(i)';
StringGrid4.Cells[2,0]:='f(x,i)';
StringGrid4.Cells[3,0]:=' y(i+1/2)';
StringGrid4.Cells[4,0]:='f(x(i+1/2),y(i+1/2))';
StringGrid4.Cells[5,0]:=' y(i+1)';
StringGrid4.Cells[6,0]:=' y(i) теор.';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
rasschot;
end;
end.
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
Заключение
.
Выполнив данную курсовую работу, я приобрел навыки в работе с
Delphi
7. Так же научился работать с компонентами, которые были использованы для создания программ.
Delphi
7 является гибким и мощным средством для создания приложений с удобным графическим интерфейсом под современные операционные системы
Windows
.
C
писок использованной литературы.
Delphi
7. Пособие для студентов/ А.В. Маткаримов.- Саяногорск, 2006 964с.