Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабараторные работы Лукины ИМЭ 101г.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
193.09 Кб
Скачать

Лабораторная работа №4 программирование с использованием подпрограмм

Задание №1. Используя подпрограмму-процедуру, составить программу для вычисления определенного интеграла, указанным в варианте численным методом. Определить число итераций, необходимых для вычисления суммы.

Исходные данные:

Определенный интеграл .

Метод: Трапеций.

.

.

Точность вычислений .

Ответ = 0.916.

Число итераций = 15.

Текст программы к заданию №1:

Program m111416;

Uses

Crt;

Const

A=2;{Trunc(3*Pi*Cos(Pi/2)/2+4 Div 2);}

B=Trunc(Sqr(2)+Sqr(3)+Sqrt(4)-10);

Eps=0.001;

Var

Int: Real;

Iter: Integer;

Function Y(X: Real): Real;

Begin

Y:=1/X;

End;

Procedure Metod_Trap(A, B: Real; Eps: Real);

Var

J: Integer;

H, Sum, I1, I2: Real;

Begin

I2:=0;

Iter:=0;

H:=(B-A)/15;

Repeat

I1:=I2;

Sum:=0;

For J:=1 To Trunc((B-A)/H)-1 Do

Begin

Sum:=Sum+Y(A+J*H);

End;

Sum:=Sum+A/2+B/2;

I2:=Sum*H;

H:=H/2;

Iter:=Iter+1;

Until Abs(I1-I2)<=Eps;

Int:=I2;

End;

Begin

ClrScr;

WriteLN('A=', A);

WriteLN('B=', B);

Metod_Trap(A, B, Eps);

WriteLN('Ответ: I=', Int:5:3);

WriteLN('Количество итераций:', Iter);

readln

End.

Результаты работы программы к заданию №1:

A=2

B=5

Ответ: I=0.917

Количество итераций:11

Задание №2. С помощью подпрограммы-функции составить программу для вычисления корня алгебраического уравнения численным методом, указанным в варианте. Определить число итераций, необходимых для вычисления корня.

Исходные данные:

Уравнение .

Метод: Хорд.

Интервал = .

Точность вычислений .

Ответ = 1,1442.

Число итераций = 100.

Текст программы к заданию №2:

Program m111426;

Uses

Crt;

Var

X: Real;

Iter: Integer;

Const

A = 0.0;

B = 10.0;

Eps= 1E-4;

Function Y(X: Real): Real;

Begin

Y:=x*x*x+4.1*x-6.2;

End;

Function Y2(X: Real): Real;

Begin

Y2:=6*x;

End;

Procedure Metod_Hord (A, B: Real; Eps: Real);

Var

C, X0, X1: Real;

Begin

If Y(A)*Y2(A)>0 then

Begin

C:=A;

X1:=B;

End

Else

Begin

C:=B;

X1:=A;

End;

Repeat

X0:=X1;

X1:=(C*Y(x0)-X0*Y(C))/(Y(X0)-Y(C));

iter:=iter+1;

Until Abs(X0-X1)<=Eps;

X:=X1;

End;

Begin

ClrScr;

WriteLn('A=',A:4:1);

WriteLn('B=',B:4:1);

Metod_Hord(A, B, Eps);

WriteLn('Ответ I=', X:7:4);

WriteLn('Количество итераций: i=', Iter);

End.

Результаты работы программы к заданию №2:

A= 0.0

B=10.0

Ответ I= 1.1442

Ко-во итераций: i=100

Лабораторная работа №5 Обработка одномерных и двумерных массивов.

Задание №1. В матрице А размерности 5х5 найти сумму элементов главной диагонали:

Исходные данные:

.

Текст программы к заданию №1:

Program m111516;

Uses

Crt;

Const

N=5;

A: Array [1..N, 1..N] OF Real = (( 1, 0.2, 56, 4 , 7),

( 0, 5 , 1, 0.567, 45),

(23, 12.1, 9, 9.09 , 2),

( 0, 0 , 3, 6 , 123),

( 0, 3 , 5, 7 , 8));

Var

I, J: Integer;

Sum: Real;

Begin

ClrScr;

For I:=1 To N Do

Begin

For J:=1 To N Do

Write (A[I, J]:6:2, ' ');

WriteLn;

End;

Sum:=0;

For I:=1 To N Do

Sum:=Sum+A[I,I];

WriteLn('Сумма элементов главной диагонали матрицы=', sum:6:2);

End.

End.

Результаты работы программы к заданию №1:

1.00 0.20 56.00 4.00 7.00

0.00 5.00 1.00 0.57 45.00

23.00 12.10 9.00 9.09 2.00

0.00 0.00 3.00 6.00 123.00

0.00 3.00 5.00 7.00 8.00

Сумма элементов главной диагонали матрицы=29.0

Задание №2.Сформировать матрицы. А, В, С:

Исходные данные:

Выполнить .

Текст программы к заданию №2:

Program m111526;

Uses

Crt;

Var

I, J, K, P, Sum: Integer;

A, B, C, D, E: Array [1..5,1..5] of Integer;

Begin

ClrScr;

WriteLN ('Матрица A:');

For I:=1 To 4 Do

Begin

For j:=1 to 5 do

Begin

If I=2 Then

A[I,J]:=J

Else

A[I,J]:=0;

Write (A[I,J]:4);

End;

WriteLN;

End;

WriteLN ('Матрица B:');

For I:=1 To 5 Do

Begin

For J:=1 To 5 Do

Begin

If J=2 Then

B[I,J]:=5

Else

B[I,J]:=I*J;

Write (B[I,J]:4);

End;

WriteLN

End;

WriteLN ('Матрица C:');

For I:=1 To 5 Do

Begin

For J:=1 To 5 Do

Begin

If I=5 Then

C[I,J]:=3*J

Else

C[I,J]:=2;

Write (C[I,J]:4);

End;

WriteLN

End;

For I:=1 To 5 Do

For J:=I+1 To 5 Do

Begin

P:=A[I,J];

A[I,J]:=A[J,I];

A[J,I]:=P;

End;

WriteLN('Матрица A^T:');

For I:=1 To 5 Do

Begin

For J:=1 To 5 Do

Write (A[I,J]:4);

WriteLN;

End;

WriteLN('Матрица D=A^T*B:');

For I:=1 To 5 Do

Begin

For J:=1 To 5 Do

Begin

Sum:=0;

For K:=1 To 5 Do

Sum:=Sum+A[I,K]*B[K,J];

D[I,J]:=Sum;

Write (D[I,J]:4);

End;

WriteLN;

End;

WriteLN('Матрица A^T*B+3*C:');

For I:=1 To 5 Do

Begin

For J:=1 To 5 Do

Begin

E[I,J]:=D[I,J]+3*C[I,J];

Write (E[I,J]:4);

End;

WriteLN;

End;

End.

Результаты работы программы к заданию №2:

Матрица C:

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

2 2 2 2 2

3 6 9 12 15

Матрица A^T:

0 1 0 0 0

0 2 0 0 0

0 3 0 0 0

0 4 0 0 0

0 5 0 0 0

Матрица D=A^T*B:

2 5 6 8 10

4 10 12 16 20

6 15 18 24 30

8 20 24 32 40

10 25 30 40 50

Матрица A^T*B+3*C:

8 11 12 14 16

10 16 18 22 26

12 21 24 30 36

14 26 30 38 46

19 43 57 76 95

Задание №3. Найти сумму нечетных элементов данного вектора.

Исходные данные:

Текст программы к заданию №3:

Program m111536;

Uses

Crt;

Const

N=10;

A: array[1..N] of Integer=(10, -17, -3, 5, -10, -5, 7, 10, 6, 1);

Var

Sum, I:Integer;

Begin

ClrScr;

WriteLN('Вектор А:');

For I:=1 To N Do

Write (A[I]:4);

Sum:=0;

For I:=1 To N div 2 Do

Sum:=Sum+A[2*I-1];

WriteLN;

WriteLN('Сумма нечет. эл-ов вектора А=', Sum:5);

End.

Результаты работы программы к заданию №3:

Вектор A:

10 -17 -3 5 -10 -5 7 10 6 1

сумма нечет. эл-ов вектора A= 10

Задание №4. В матрице размерностью 5×5 найти среднее арифметическое элементов второстепенной диагонали.

Исходные данные:

Текст программы к заданию №4:

Program m111546;

Uses

Crt;

Const

N=5;

A: Array[1..N,1..N] of Real=(( 1, 0.2, 56, 4 , 7),

( 0, 5 , 1, 0.567, 45),

(23, 12.1, 9, 9.09 , 2),

( 0, 0 , 3, 6 , 123),

( 0, 3 , 5, 7 , 8));

Var