Формування квадратної матриці

Отримання компонентів вектора із квадратної матриці відповідно до заданого алгоритму. Обчислення значення функції. Базова програма реалізації алгоритму. Модуль глобальних описів. Сервісний модуль обслуговування матриці. Результати роботи програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 30.01.2013
Размер файла 19,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МІНІСТЕРСТВО ТРАНСПОРТУ ТА ЗВ'ЯЗКУ УКРАЇНИ

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДЕРЖАВНИЙ УНІВЕРСИТЕТ

ІНФОРМАЦІЙНО-КОМУНІКАЦІЙНИХ ТЕХНОЛОГІЙ

КАФЕДРА

ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ

КУРСОВА РОБОТА

З дисципліни «Інформатика».

Варіант81

Зміст

1. Завдання на курсову роботу

2. Базова програма реалізації алгоритму

3. Модуль глобальних описів

4. Сервісний модуль обслуговування матриці

5. Головна програма

6. Результати роботи програми

7. Використована література

1. Завдання на курсову роботу

Загальне завдання на курсову роботу

1. По функції f(і,j), що задана, необхідно сформувати квадратну матрицю А = {aij}, i,j = 1,2,...,..., т, де аij =f(i,j). (Для демонстрації т =5.)

2.Після чого із цієї матриці відповідно до заданого алгоритму необхідно отримати компоненти вектора X = {хi}, і = 1,2,..., п.

3. Після отримання компонентів вектора X обчислити значення функції U.

Індивідуальне завдання (Варіант №22)

1. Функція f(i,j)= 2( - 2)i- 3,9)(-1,5)i-j(і/З - 1,1).

2. За вектор X взяти перший за порядком у зворотному порядку стовпець матриці з найменшою сумою його елементів, якщо його максимальний елемент знаходиться на непарній позиції, в іншому випадку за вектор X взяти попарну суму елементів головної і допоміжної діагоналей.

3. За U взяти суму найбільшого та найменшого елементів вектору X, якщо с<b, в іншому випадку за U взяти добуток першого та останнього елементів.

2. Базова програма реалізації алгоритму

Program Golovna; {Програма утворення квадратної матриці по функції A[i,j], вектора X та обчислення значення U

Uses Crt; {Використовуваний бібліотечний модуль}

Const Len=15; {опис постійної, найбільша розмірність матриці та вектора}

Туре

mtr=array[l..Len,l..Len] of real; {Користувацький тип mtr}

mas=array[l..Len] of real; {Користувацький тип mas} r{перелік використаних змінних та їх типів}

i,j,n:integer; {параметри циклу і розмірності}

a:mtr; {двохмірний масив}

x:mas; {одномірний масив X}

adr:integer; {змінна, передбачена для фіксування в ній адреси першого за порядком стовпця матриці з найменшою сумою елементів.}

max:real; {передбачена для фіксування в ній найбільшого значення елемента стовпчика з адресою adr.}

am:integer; {змінна, в котрій будемо фіксувати адресу найбільшого елемента стовпчика матриці з адресою adr.}

suml,sum2:real; {Змінна sum1 - передбачена для накопичення суми елементів стовпчика матриці з адресою adr. Змінна sum2 - передбачена для накопичення в ній суми елементів стовпчика з адресою j. Значення змінної adr завжди буде дорівнювати адресі першого за порядком стовпчика матриці з найменшою сумою його елементів}

min:real; {робоча змінна}

r: real; {робоча змінна}

c,b:integer;

u:real; {змінна для обчислення значення функції}

BEGIN{початок програми}

CIrscr; {функція котра перед кожним запуском програми очищає екран виведення результату}

writeln ('Vvedite razmernost matrix A: n'); {виведення повідомлення}

write ('n='); {виведення повідомлення} read (n); {введення розмірності матриці}

For i:=1 to n do {зовнішній цикл перебігу матриці по рядках}

For j := 1 to n do begin {вкладений цикл перебігу рядка поелементно}

{write('a[',i,',',j,']=');read(a[i,j]);} {якщо прийняти фігурні дужки і взяти у фігурні дужки вираз для формування елемента матриці - отримаємо тест програму}

if і mod 2=1 then r:=-exp(i*ln(2)) else r:=exp(i*ln(2));

if (i-j)mod 2=1 then

a[i,j]:=-exp((i-j)*ln(1.5))*2*r*(i-3.9)*(i/3-l.l) {утворення елемента матриці}

else

a[i,j]:=exp((i-j)*In(1.5))*2*r*(i-3.9)*(i/3-l.1); {утворення елемента матриці}

end;

Clrscr;

writeln('----Matrica----'); {виведення повідомлення}

For i:= 1 to n do begin {цикл виведення елементів матриці на екран}

For j:= 1 to n do

write('A[',i,j,']=',a[i,j] :6:3,' '); {виведення елемента матриці на екран}

writeln; {виведення порожнього рядка з метою відділити виведену інформацію}

writeln;

end;

writeln;

writeln('----Vector----') ; {виведення повідомлення}

adr:=1; {надаємо змінній adr :=1 початкового значення. Змінна передбачена для фіксування в ній адреси першого за порядком стовпця матриці з найменшою сумою елементів. Таким чином, надаючи їй значення 1, припускаємо що перший стовпець має найменшу суму елементів}

For j:= 2 to n do begin {цикл перебігу матриці по стовпцям. Значення змінної j буде вказувати адресу стовпчика, що перевіряється. Змінна приймає значення від 2 до п.}

sum1:=0;sum2:=0; {початок перевірки кожного нового стовпчика матриці, тобто після кожної зміни значення j змінним sum1: =0;sum2:=0; max:=a[1,adr];am:=1 надаємо початкових значень}

max:=a[1,adr];am:=1;

For i:= 1 to n do begin {цикл перебігу j- го стовпчика поелементно, в якому відбувається утворення сум елементів стовпчиків}

sum1:=sum1+a[i,adr]; {sum1- сума елементів стовпчика матриці з адресою adr }

sum2:=sum2+a[i,j]; {sum2 - сума елементів j-го стовпчика матриці}

if max<a[i,adr] then begin {знаходження найбільшого елемента та його адреси стовпчика матриці з адресою adr } {відбувається порівняння значень елементів стовпчика зі значенням змінної max. І якщо буде знайдено елемент стовпчика більший за значенням від змінної max, то відбувається надання змінній max значення цього елемента та фіксування в змінній am адреси цього елемента}

max:=a[i,adr];

am:=i;

end;end;

ifsuml>sum2 {відбувається порівняння значень сум}

then adr:=j; {фіксуємо адресу стовпчика матриці з найменшою сумою елементів}

end;

For i:= 1 to n do begin {цикл в котрому відбувається утворення та виведення елементів вектора}

if am mod 2=1 { перевіряємо, чи є адреса найбільшого елемента, першого за порядком стовпчика матриці, непарною }

then x[i]:=a[n+l-i,adr]f {якщо так то елемент вектора утворюється в результаті взяття цього стовпчика за елементи вектора у зворотному порядку}

else х[і]:=а[і,і]+а[і,п+1-і]; кщо адреса найбільшого елемента буде парною, то елемент вектора буде утворюватися в результаті суми відповідних елементів головної та допоміжної діагоналі матриці}

writeln('х[`,і,']=',х[і]:5:3); {виведення щойно утвореного елемента вектора}

end;

writeln('--------Funkciy--------');

write('c='); {виведення повідомлення} read(c); {введення номера заліковки та номера за списком у групі}

write('b='); {виведення повідомлення} read(b);

mах:=х[1];min:=х[1]; {Змінні тах:=х[1];тіп:=х[1] отримують значення першого елемента вектора}

if с<b {порівняння значень змінних с та b} then begіп кщо c<b то програма прямує до циклу перебігу вектора поелементно, в його тілі відбувається знаходження найбільшого та найменшого елементів вектора. По закінченню перебігу цього циклу відбувається утворення значення функції в результаті суми знайдених значень найбільшого та найменшого елементів вектора}

For i:= 1 to n do begin

if max<x[i] then max:=x[i];

if min>x[i] then min:=x[i];

end;

U:=max+min end

else U:=x[l]*x[n]; {якщо c>=b то значення функції буде утворено в результаті добутку першого та останнього елементів вектора}

writeln('U=',U:5:3); {виведення значення функції на екран}

repeat until keypressed;

End.

вектор квадратний матриця алгоритм

3. Модуль глобальних описів

Unit Global;

Interface

Const

len=10;

Type

Tmatr=array [l..len,l..len] of real;

Tvect=array[l..len] of real;

implementation

End.

4. Сервісний модуль обслуговування матриці

Unit MODUL22;

interface

uses global;

Procedure CreateMatrix(n:byte; var M:Tmatr);

Procedure OutputMatrix(n:byte; var M:Tmatr);

Procedure OutputVector(n:byte; V:TVect);

Var і,j: integer;

implementation

Procedure CreateMatrix;

Var і,j: integer;

r: real;

begin

For і:= 1 to n do begin

for j:=1 to n do begin

{write('a[',i,',',j,'] = ') ; read(m[i,j]) ;}

if і mod 2=1 then r:=-exp(i*ln(2)) else r:=exp(i*ln(2));

if (i-j)mod 2=1 then

m[i,j]:=-exp((i-j)*ln(1.5))*2*r*(i-3.9)*(i/3-l.l)

else

m[i,j]:=exp((i-j)*ln(1.5))*2*r*(i-3.9)*(i/3-1.1)/

end;

end;end;

Procedure OutputMatrix;

begin

writeln;

writeln('_____Elementu Matricu______');

for і:=1 to n do

begin

for j:=1 to n do

write(M[i,j]:10:3,' ');

writeln;

end;

writeln;

end;

Procedure OutputVector;

begin

writeln;

writeln ('______Elementu Vektora______') ;

for і:=1 to n do

writeln('x[',i,']=',V[i]:5:3);

writeln;

end;

end.

5. Головна програма

Program moduli;

Uses crt, global,MODUL22;

Var

x:Tvect;

a:Tmatr;

і ,j,n: integer;

adr: integer;

max: real;

am: integer;

suml,sum2: real;

min: real;

r: real;

с, b: integer;

u: real;

BEGIN

ClrScr;

write ('n=');read(n) ;

CreateMatrix(n,A);

OutputMatrix(n,A);

adr:=1;

For j:= 2 to n do begin

suml:=0;sum2:=0;

max:=a[1,adr];am:=1;

For і:= 1 to n do begin

suml:=suml+a[i,adr];

sum2:=sum2+a[і,j];

if max<a[i,adr] then begin

max:=a[i,adr];

am:=i ;

end;end;

if suml>sum2 then adr:=j;

end;

For і:= 1 to n do begin

if am mod 2=1

then x[i]:=a[n+l-i,adr]

else x[i]:=a[i,i]+a[i,n+l-i];

end;

OutputVector(n,x);

writeln ('-----Funkciy-----') ;

write ('c=') ;read(c) ;

write('b=');read(b);

max:=x[1];min:=x[1];

if c<b then begin

For і:= 1 to n do begin

if max<x[i] then max:=x[i];

if min>x[i] then min:=x[i];

end;

U:=max+min end

else U:=x[l]*x[n];

writeln('U=',U:5:3);

repeat until keypressed;

END.

6. Результати роботи програми

при n=5 і при однаковому форматі виведення для всіх чотирьох видів даних a[i,j]:5:3;

Матриця - 5x5

а[11]= -8.893 а[12]= -5.929 а[13]= -3.953 а[14]= -2.635 а[15]= -1.757

а[21]= -9.880 а[22]= 6.587 а[23]= 4.391 а[24]= 2.927 а[25]= 1.952

а[31]= -3.240 а[32]= 2.160 а[33]= -1.440 а[34]= -0.960 а[35]= -0.640

а[41]= -2.520 а[42]= 1.680 а[43]= -1.120 а[44]= 0.747 а[45]= 0.498

а[51]= -201.960 а[52]= 134.640 а[53]= -89.760 а[54]= 59.840 а[55]= -39.893

Вектор

Адреса стовпця adr=l Адреса найбільшого елемента аm=4

х[1]=-10.650

х[2]=9.514

х[3]=-2.880

х[4]=2.427

х[5]=-241.853

Функція С=4 В=3

U=2S75.748

Результати ручних розрахунків співпадають з програмними, що свідчить про правильність роботи програми.

Тест матриця

Умова виконується

Матриця - 5x5

а[11]=7.000 а[12]=6.000 а[13]=4.000 а[14]=3.000 а[15]=-2.000

а[21]=1.000 а[22]=0.000 а[23]=-9.000 а[24']=7. 000 а[25]=8.000

а[31]=6.000 а[32]=-4.000 а[33]=-4.000 а[34]=3.000 а[35]=2.000

а[41]=1.000 а[42]=9.000 а[43]=-1.000 а[44]=2.000 а[45]=-4.000

а[51]=5.000 а[52]=8.000 а[53]=7.000 а[54]=6.000 а[55]=-5.000

Вектор

Адреса стовпця adr=3 Адреса найбільшого елемента am=5

х[1]=7.000

х[2]=-1.000

х[3]=-4.000

х[4]=-9.000

х[5]=4.000

Функція С=9 В=2

U=28.000

Умова не виконується

Матриця - 5x5

а[11]=1.000 а[12]=6.000 а[13]=4.000 а[14]=2.000 а[15]=3.000

а[21]=7.000 а[22]=9.000 а[23]=1.000 а[24]=4.000 а[25]=3.000

а[31]=2.000 а[32]=7.000 а[33]=-1.000 а[34]=7.000 а[35]=9.000

а[41]=2.000 а[42]=0.000 а[43]=6.000 а[44]=-8.000 а[45]=5.000

а[51]=2.000 а[52]=7.000 а[53]=1.000 а[54]=8.000 а[55]=7.000

Вектор

Адреса стовпця adr=3 Адреса найбільшого елемента аm=4

х[1]=4.000

х[2]=13.000

х[3]=-2.000

х[4]=-8.000

х[5]=9.000

Функція С=22 В=6

U=36.000

7. Використана література

Ф.Б. Бартків, Я.Т. Гринчишин, A.M. Ломакович, Ю.С. Рамский. TURBO PASCAL: Алгоритми и програми. Київ, «Вища школа».

Ю.С. Бородич, А.Н. Вальвачев, Ф.И. Кузьмич. Паскаль для персональных компьютеров. Минск,"Вышэйшая школа", БФ ГИТМП "НИКА", .

А. И. Марченко, Л. М. Марченко. Программирование в среде TURBO Pascal 7.0. Киев "ВЕК+", Москва "ДЕСС".

Д.Б. Поляков, И.Ю. Круглов. Программирование в среде Турбо Паскаль, Москва , МАИ, А/О "РОСВУЗНАУКА".

Размещено на Allbest.ru


Подобные документы

  • Формування квадратної транспонованої матриці, отримання з неї компонентів вектора та обчислення значення функції в мові Pascal. Базова програма реалізації алгоритму. Сервісний модуль обслуговування матриці. Головна програма та результати її роботи.

    курсовая работа [40,2 K], добавлен 10.03.2011

  • Загальна характеристика програмного продукту Турбо Паскаль 7.0, його структура та функції. Методика та головні етапи формування квадратної матриці по заданій формулі. Розробка та лістинг отриманої програми. Аналіз результатів виконання програми.

    контрольная работа [145,0 K], добавлен 04.11.2013

  • Розробка програми в візуальному середовищі С++. Визначення значення функцій в середовищі Builder мовою програмування С++. Обчислення елементів квадратної матриці згідно заданного алгоритму. Бібліотека візуальних компонентів і середовище програмування.

    курсовая работа [451,5 K], добавлен 15.01.2012

  • Блок-схема та програма обчислення значення функції y=f(x) у точці x0. Обчислення двох значень поліному з використанням схеми Горнера. Програма табуляції функції Y на проміжку [a,b] з шагом h. Програма визначення нульових елементів квадратної матриці.

    контрольная работа [63,3 K], добавлен 23.09.2010

  • Сутність та структура квадратної матриці, її основні елементи та зміст. Методика проектування спеціальної комп'ютерної програми, що знаходить суму елементів даної матриці стовпця та рядка, на які вказують індекси елемента, і замінює сумою сам елемент.

    контрольная работа [227,5 K], добавлен 09.11.2009

  • Стандарти OpenMP i MPI як основні засоби програмування для багатопроцесорних систем. Розробка програми паралельного розрахунку інтеграла для функції з певним кроком дискретизації, паралельної програми множення квадратної матриці на квадратну матрицю.

    курсовая работа [2,5 M], добавлен 11.12.2013

  • Програмування масиву і сукупність елементів одного типу даних, впорядкованих за індексами, які зазвичай репрезентовані натуральними числами, що визначають положення елемента в масиві. Лістинг програми та блок-схема алгоритму і результат виконання.

    курсовая работа [453,1 K], добавлен 06.06.2012

  • Розробка програми для розрахунку норм вектору. Процедури множення матриці на матрицю, сумування матриць, віднімання векторів. Функція множення матриці на вектор. Обчислення евклідової норми вектора. Створення зручного інтерфейсу для користувача.

    курсовая работа [397,6 K], добавлен 13.03.2011

  • Мова Асемблера, її можливості та команди. Розробка алгоритму програми, його реалізація в програмі на мові Асемблера. Введення елементів матриці та обчислення cуми елементів, у яких молодший біт дорівнює нулю. Методи створення програми роботи з матрицями.

    контрольная работа [50,3 K], добавлен 12.08.2012

  • Основні відомості з лінійної алгебри. Власні значення і вектори матриці. Метод обертання Якобі. Засоби формування інтерфейсу користувача. Текст програми алгоритму методу обертання Якобі. Вимоги до програмно-технічного забезпечення. Інструкція користувача.

    курсовая работа [306,0 K], добавлен 18.11.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.