Автор работы: Пользователь скрыл имя, 30 Сентября 2009 в 14:05, Не определен
7 типовых заданий
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]:=
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid2.Cells[j-1,k-1]:=
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]:=
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid4.Cells[j-1,k-1]:=
part2;//Вторая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid5.Cells[j-1,k-1]:=
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid6.Cells[j-1,k-1]:=
i:=2;//Второй шаг
part1;//Первая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid7.Cells[j-1,k-1]:=
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid8.Cells[j-1,k-1]:=
part2;//Первая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid9.Cells[j-1,k-1]:=
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid10.Cells[j-1,k-1]:=
i:=3;//Первый шаг
part1;//Первая часть шага
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid11.Cells[j-1,k-1]:=
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid12.Cells[j-1,k-1]:=
part2;//Второй шаг
//Вывод элементов первой матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid13.Cells[j-1,k-1]:=
//Вывод элементов второй матрицы
for k:=1 to 3 do
for j:=1 to 3 do
StringGrid14.Cells[j-1,k-1]:=
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:
var
Form1: TForm1;
y,x1,x2,x3,dx,dy,sigmaY:real;
implementation
{$R *.dfm}
function
Yfunc(yx1,yx2,yx3:real):real;
begin
result:=(yx1*yx1)/(yx2*yx2+
end;
function deltafunc(dx1,dx2,dx3,ddx:
begin
result:=(abs(2*dx1/(dx2*dx2+
end;
procedure TForm1.Button1Click(Sender: TObject); //запуск вычислений на исполнение
begin
dy:=deltafunc(x1,x2,x3,dx);
Label2.Caption:=FloatToStrF(
y:=Yfunc(x1,x2,x3);
Label3.Caption:=FloatToStrF(y,
sigmaY:=dy/y;
Label4.Caption:=FloatToStrF(
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
x1:=1.2;
x2:=1.5;
x3:=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;