Автор работы: Пользователь скрыл имя, 30 Сентября 2009 в 14:05, Не определен
7 типовых заданий
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+
dh:=func(x)*B;
form1.StringGrid4.Cells[0,i]:=
form1.StringGrid4.Cells[1,i]:=
form1.StringGrid4.Cells[2,i]:=
form1.StringGrid4.Cells[3,i]:=
form1.StringGrid4.Cells[4,i]:=
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]:=
form1.StringGrid2.Cells[1,i]:=
form1.StringGrid2.Cells[2,i]:=
form1.StringGrid2.Cells[3,i]:=
form1.StringGrid2.Cells[4,i]:=
form1.StringGrid2.Cells[5,i]:=
form1.StringGrid2.Cells[6,i]:=
form1.StringGrid2.Cells[7,i]:=
while (abs(b-a)/2)>eps do begin
inc(i);
form1.StringGrid2.RowCount:=i+
if (func(a)*func(x))<0 then
b:=x
else
a:=x;
x:=(b+a)/2;
form1.StringGrid2.Cells[0,i]:=
form1.StringGrid2.Cells[1,i]:=
form1.StringGrid2.Cells[2,i]:=
form1.StringGrid2.Cells[3,i]:=
form1.StringGrid2.Cells[4,i]:=
form1.StringGrid2.Cells[5,i]:=
form1.StringGrid2.Cells[6,i]:=
form1.StringGrid2.Cells[7,i]:=
end;
end;
procedure kas; // метод касательной
var x,dh:real;
i:integer;
begin
i:=1;
x:=korni[2];
repeat
form1.StringGrid3.RowCount:=i+
dh:=func(x)/funcproizv(x);
form1.StringGrid3.Cells[0,i]:=
form1.StringGrid3.Cells[1,i]:=
form1.StringGrid3.Cells[2,i]:=
form1.StringGrid3.Cells[3,i]:=
form1.StringGrid3.Cells[4,i]:=
form1.StringGrid3.Cells[5,i]:=
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+
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-
StringGrid3.Cells[2,0]:='f(x(
StringGrid3.Cells[3,0]:='f''(
StringGrid3.Cells[4,0]:='h';
StringGrid3.Cells[5,0]:='x(i)=
StringGrid4.Cells[0,0]:='i';
StringGrid4.Cells[1,0]:='x(i-
StringGrid4.Cells[2,0]:='f(x(
StringGrid4.Cells[3,0]:='h=B*
StringGrid4.Cells[4,0]:='x(i)=
start:=-5;
finish:=5;
h:=0.5;
eps:=0.01;
Label2.Caption:=Label2.
Label3.Caption:=Label3.
Label4.Caption:=Label4.
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]:=
form1.StringGrid1.Cells[k,1]:=
form1.StringGrid1.Cells[k,2]:=
while x<finish do begin
inc(k);
form1.StringGrid1.ColCount:=k+
form1.StringGrid1.Cells[k,0]:=
form1.StringGrid1.Cells[k,1]:=
form1.StringGrid1.Cells[k,2]:=
if (func(x)/(abs(func(x))))<>(
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