Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова робота6_6.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
182 Кб
Скачать
☆

2. Постановка задачі

Завдання курсової роботи на тему „Використання підпрограм та функцій користувача при роботі з масивами” належить до обчислювального класу задач.

Метою розв’язання даної роботи є поетапне вирішення таких завдань:

  1. Обчислити елементи квадратної матриці (і=1, 2,...5; j = 1,2,...5).

  2. Використовуючи елементи матриці обчислити елементи вектора (і =1, 2,...5), як суму елементів головної діагоналі та п’ятого стовпця матриці.

  3. Обчислити значення функції за формулою на основі знайдених елементів вектора з використанням вкладених циклів.

  4. Завдання. обчислити інтеграл , використовуючи формулу Сімпсона при n=100. Коефіцієнти виразу скопіювати з відповідних елементів вектора Х, який було створено вище.

3. Алгоритм розв’язання задачі

3.1. Розглянемо першу задачу. Побудуємо блок-схему та запишемо процедуру реалізації даної задачі. Слід відмітити, що задача реалізується за допомогою вкладених циклів. Змінна циклу і є змінною зовнішнього циклу, а змінна циклу j – внутрішнього циклу.

3.1.1. Блок-схема для створення матриці , елементи якої визначаються за формулою

3.1.2. Процедура реалізації підпрограми знаходження матриці , елементи якої визначаються за формулою

procedure mas (var a: arr);

var i,j: integer;

begin

for i:=1 to 5 do

begin

for j:=1 to 5 do

begin

a[i,j]:=(3+i)/(i+j)*sqrt(exp(3*ln(i))+sqr(j))+exp((i-j)*ln(2));

write('a[',i,',',j,']=',a[i,j]:6:4,' ' );

end;

writeln

end;

end;

Дана процедура формує матрицю та виводить на екран елементи матриці по стрічках. Тіло процедури реалізовано за допомогою операторів циклу з параметром, оскільки крок змінних циклу дорівнює 1.

3.2. Складемо блок-схему та процедуру реалізації другої задачі, посилаючись на дані першої задачі. Використовуючи елементи матриці обчислити елементи вектора (і =1, 2,...5), як суму елементів головної діагоналі та п’ятого стовпця матриці.

3.2.1. Блок-схема формування вектора

      1. Процедура реалізації підпрограми формування вектора

Procedure vector (a: arr; var x: array of real);

var i,j: integer;

begin

for i:=1 to 5 do

begin

x[i]:=a[i,i]+a[i,5];

write ('x[',i,']= ',x[i]:3:3,' ');

end;

end;

Дана процедура формує вектор та виводить на екран вектор у вигляді стрічки.

3.3. Складемо блок-схему та процедуру реалізації третьої задачі посилаючись на дані першої та другої задачі. Обчислити значення функції

      1. Блок-схема обчислення функції

3.3.2. Процедура обчислення функції

procedure func(x:array of real;var g:real);

var k: integer; p: real;

begin

g:=0; p:=1;

for i:=1 to 5 do

begin

for k:=1 to i do p:=p*x[k]/(k+exp(k*ln(2)));

g:=g+sqr(x[i])+p;

end;

writeln('G= ',g:6:4);

readln

end;

3.5. Запишемо програму розв’язку задач першої частини, опираючись на раніше створені процедури

PROGRAM kurs6;

uses crt;

type arr=array [1..5,1..5] of real;

type xrr=array [1..5] of real;

var a: arr;

x: xrr;

si, g: real; i,j: integer;

procedure mas (var a: arr);

var i,j: integer;

begin

for i:=1 to 5 do

begin

for j:=1 to 5 do

begin a[i,j]:= (3+i)/(i+j)*sqrt(exp(3*ln(i))+sqr(j))+exp((i-j)*ln(2));

write('a[',i,',',j,']=',a[i,j]:6:4,' ' );

end;

writeln

end; end;

Procedure vector (a: arr; var x: xrr);

var i,j: integer;

begin

for i:=1 to 5 do

begin

x[i]:=a[i,i]+a[i,5];

write ('x[',i,']= ',x[i]:3:3,' ');

end; end;

procedure func(x: xrr;var g:real);

var k: integer; p: real;

begin

g:=0;p:=1;

for i:=1 to 5 do

begin

for k:=1 to i do p:=p*x[k]/(k+exp(k*ln(2)));

g:=g+sqr(x[i])+p;

end;

writeln('G= ',g:6:4);

end;

procedure simpson( x: xrr; var si: real);

var i,k:integer; h,z,a,b,f,f1:real;

begin

writeln('a,b'); readln(a,b);

h:=(b-a)/100; z:=b;

f1:=(x[1]+x[2]*z+x[3]*z*z +x[4]*z*z*z+x[5]*exp(4*ln(z)))/(exp(z)+1.5);

k:=1; z:=a;

f:=(x[1]+x[2]*z+x[3]*z*z +x[4]*z*z*z+x[5]*exp(4*ln(z)))/(exp(z)+1.5);

si:=f+f1;

for i:=1 to 99 do

begin

z:=z+h;

f:=(x[1]+x[2]*z+x[3]*z*z +x[4]*z*z*z+x[5]*exp(4*ln(z)))/(exp(z)+1.5);

si:=si+(3+k)*f;

k:=-k;

end;

si:=si*h/3;

writeln('integral=',si);

readln

end.