DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Інформація про навчальний заклад

ВУЗ:
Державний університет інформаційно-комунікаційних технологій
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра обчислювальної техніки

Інформація про роботу

Рік:
2013
Тип роботи:
Курсова робота
Предмет:
Інформатика

Частина тексту файла (без зображень, графіків і формул):

Зразок Міністерство транспорту та зв’язку України Міністерство освіти і науки України Державний університет інформаційно-комунікаційних технологій КАФЕДРА ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ КУРСОВА РОБОТА З дисципліни «Інформатика». Студент І курсу, групи AД-13Б Спеціальність : ІТ Тесленченко Олександр Сергійович Залікова книжка № 04А45 Перевірив: доцент Качанов П.Т. Оцінка: Дата: Київ 2010 З М І С Т 1 Завдання…………………………………………………………..   2 Пояснювальний материал……………………………………….   3 Узагальнена блок-схема алгоритму ..............................………..   4 Базова програма реалізації алгоритму………………………….   5 Програма з використанням процедур………………………….   6 Модуль глобальних описів………………………………………   7 Сервісний модуль обслуговування матриці……………………   8 Головна програма………………………………………………...   9 Результати роботи програми……………………………………   10 Література………………………………………………………...    ЗАВДАННЯ НА КУРСОВУ РОБОТУ Загальне завдання на курсову роботу 1.По функції f(i,j), що задана, необхідно сформувати квадратну матрицу A = {aij}, i,j = 1,2, …,…, m, де aij = f(i,j). (Для демонстрації m =5. ) 2.Після чого із цієї матриці відповідно до заданого алгоритму необхідно отримати компоненти вектора X = {xi}, i = 1,2, … , n. 3. Після отримання компонентів вектора X обчисліти значення функції U. Індивідуальне завдання (Вар № Х) 1.Функція f(i,j)= (/3,7 – j/ -2)2i-j (i +j – 7,3) Sin (1,5 +log2 (i/j)). 2. Компонентами вектора Х взяти елементи транспонованої матрици А, кожний з котрих не білш чим 2. Обмеження: ім’я транспонованої матрици повинно співпадати з вихідної, тобто бути А. 3. U= (xi + xn+1-i ). ПОЯСНЮВАЛЬНИЙ МАТЕРІАЛ I. Відповідно до пункту №1завдання (формування матриці) на узагальненій блок-схемі алгоритму (довільна форма представлення блок-схеми-рис.1) передбачені блоки №2-№7. Матриця вводиться по рядках, тому зовнішнім циклом визначений цикл №1 з параметром I= 1-m , а внутрішнім - цикл №2 з параметром J=1- n. З огляду на ту обставину, що в мові Pascal відсутні убудовані функції: зведення в довільний ступінь і одержання логарифма при довільній підстави, вихідний вираз для формування елемента матриці (блок №5) для використання в програмі перетворено з урахуванням наступних властивостей: 1) (ABS(3.7-j)-2)*2i-j представлено як (ABS(3.7-j)-2)* exp((i-j)*ln(2)), що випливає з розгляду наступного положення. Тому як існує убудована функція exp(x) - експонента, то ми маємо право записати для будь якого числа А таке співвідношення Ab=ex. Далі, узявши логарифм по підставі e від правої і лівої частини цієї рівності, одержимо x = b*ln(A). Отже, Ab = exp( b*ln(A)). 2) Будь-яке число A можна представити як  чи , відкіля випливає, що . Прологарифмировав ліву і праву частини цього виразу по підставі e, одержимо loq(p) A*ln(p)= ln(A), відкіля loq(p)A = ln(A)/ ln(p). II. Тому як в пункті №2 завдання введене обмеження на процес одержання транспонованої матриці, те алгоритм його реалізації (блоки№13 - №19) отриманий, виходячи з наступних міркувань, має вигляд: Нехай є квадратна матриця А[4х4] такого виду: A11 A12 A13 A14  A21 A22 A23 A24  A31 A32 A33 A34  A41 A42 A43 A44   Тоді на першому кроці (заміна першого стовпця на перший рядок) реалізується досить просто, а саме, шляхом реалізації оператора присвоювання наступного виду a[i,j]:=a[j,i} при виконанні внутрішнього циклу (№6) по всіх стовпцях (j змінювалося від 1 до 4) і одиничному значенні парамеира зовнішнього циклу (№5) по рядках (i=1). Черговий крок, як видно, повинний початися з заміни вже трьох стовпців на три рядки, починаючи з другого стовпця і другого рядка, (i=2, j=2). тобто з клітки A22. І нарешті буде виконаний третій (останній) крок (i=3, j=3 ), починаючи з клітки A33. Звідси випливає, що початкове значення параметра внутрішнього циклу (№6 по стовпцях) повинне збільшуватися на одиницю з кожним новим зовнішнім циклом. Це досягається використанням змінної L (блок №15), якої привласнюється початкове значення 1 (у блоці №13) з наступним збільшенням на 1 ( у блоці №18) після завершення внутрішнього циклу №6, а кількість виконань зовнішнього циклу повинне бути на одиницю менше числа рядків, що відбито в блоці №14. III. Тому як при формуванні вектора Х кількість елементів матрици менших 2 заздалегідь невідомо, те в змінній K (блок №29) організується лічильник, що формує поточний індекс елемента вектора. При цьому враховане, що при завершенні формування вектора показання лічильника перевищують на одиницю реальну розмірність . Це враховано при виводі вектора на відображення (блок№33) і при обчисленні функції (блок№37). БАЗОВА ПРОГРАМА РЕАЛІЗАЦІЇ АЛГОРИТМУ Program Generalna; {Программа формирования квадратной матрицы по выражению для A[i,j], вектора Х по транспонированной матрице и вычисления функции U} uses Crt; {Используемый библиотечный модуль} Const Len=100; Type mtr= array [1..Len,1..Len] of real; {Пользовательский тип mtr} mas= array [1..Len] of real; {Пользовательский тип mas} var i,j, m,n:integer; {Рабочие переменные : параметры цикла и размерности} k:byte; {Счетчик –формирователь индексов при получении массива Х} L:byte; {Переменная для задания начального значения параметра цикла при транспонировании матрицы} a:mtr; {Матрица А} x:mas; {Массив Х} c:real; {Рабочая переменная} u: real;{Имя вычисляемой функции} BEGIN ClrScr; writeln ('Введите размерность матрицы A: числа M и N' ); write('m='); read (m); write('n='); read(n); writeln (' Введите элементы a[i,j] матрицы А '); for i:=1 to m do{Внешний цикл по строкам} for j:=1 to n do{Вложенный цикл по столбцам} a[i,j]:=(ABS(3.7-j)-2) *exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2))); ClrScr; write (' Выведите элементы a[i,j] матрицы А '); writeln; writeln; {Вывод матрицы А по строкам} for i:=1 to m do{Внешний цикл по строкам} begin for j:=1 to n do{Вложенный цикл по столбцам} write ('a[',i,',',j,']=', a[i,j]:10:7,' '); {Вывод элемента a[i,j]матрицы А} writeln; {Оператор для перехода на очередную строку} end; { Транспонирование матрицы} L:=1; { Начальное значение переменной для задания начального значения параметра цикла по столбцам при транспонировании матрицы} for i:=1 to m-1 do{Внешний цикл по строкам} begin for j:=l to n do{Вложенный цикл по столбцам} begin c:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=c; end; L:=L+1 end; writeln ( ' Транспонированная матрица'); writeln; for i:=1 to m do begin for j:=1 to n do write ('a[',i,',',j,']=', a[i,j]:10:7,' ');{ Вывод элемента транспонированной матрицы} writeln; { Оператор для переключения строки} end; { Формирование массива Х} K:=1; {Начальное значение формирователя индексов элементов массива Х } for i:=1 to m do for j:=1 to n do if a[i,j]<2 then begin x[k]:=a[i,j]; { Формирование элемента x[k] массива Х} k:=k+1; end; { Вывод массива Х} writeln(' Maссив X'); writeln; for i:=1 to k-1 do write ('x[',i,']=', x[i]:10:7,' '); { Вывод элемента массива Х} { Вычисление функции U} U:=1; {Начальное значени переменной для накапливания произведений при вычислении функции U} for i:=1 to k-1 do U:=U*(x[i]+x[k-i]); { Вычислеемое значение функции U на i-м шаге} writeln; writeln; write (' Функция: u=',u:10:7); { Вывод значения функции U} Repeat Until KeyPressed END. ПРОГРАМА З ВИКОРИСТАННЯМ ПРОЦЕДУР Program Proverka_Proz; uses Crt; Const Len=100; Type mtr= array [1..Len,1..Len] of real; {Tip massiv-matriza} mas= array [1..Len] of real; {Tip massiv-vector} var i,j,k,m,n,l:integer; a:mtr; { Imja peremennoi - matriza} x:mas; { Imja peremennoi - vektor} u:real; {Imja peremennoi -funzija} c:real; { Rabochaja peremennaja} Procedure Viv_M; Begin writeln; writeln; for i:=1 to m do {vnechnii zikl po strokam} begin for j:=1 to n do {vnutrenii zikl po stolbzam} write ('a[',i,',',j,']=', a[i,j]:10:7,' '); {vivod elementa matrizi a[i,j] } writeln; {operaator dlja perehoda na ocherednuju stroku} end; writeln; End; BEGIN ClrScr; {vvod elementov matrizi po strokam} writeln ('vvedite razmernost matrizi A: chisla M i N'); write('m='); read (m); write('n='); read(n); {zapolnenie matrizi A -vvod elementov a[i,j]'} for i:=1 to m do for j:=1 to n do a[i,j]:=(ABS(3.7-j)-2) *exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2))); ClrScr; {vivod matrizi A po strokam} writeln ( ' ishodnaja Matriza'); Viv_M; {operator proceduru } { transponirovannaie Matrizi A } L:=1; { nachalnoe znachenie parametra zikla po stolbzam pri transponirovanii Matrizi A } for i:=1 to m-1 do begin for j:=L to n do begin c:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=c; end; L:=L+1 end; writeln ( ' transponirovannaja Matriza'); {vivod transponirovannoi matrizi A po strokam } Viv_M; {operator proceduru } {formirovanie massiva X iz transponirovannoi matrizi A } k:=1; {nachalnoe znachenie formirovatelja indexov massiva X} for i:=1 to m do for j:=1 to n do if a[i,j]<2 then begin x[k]:=a[i,j];{formirovanie elementa x[k] massiva X } k:=k+1; end; {vivod massiva X} writeln(' Massiv X'); writeln; for i:=1 to k-1 do write ('x[',i,']=', x[i]:10:7,' ');{vivod elementa massiva X} {vichislenie funkzii U} U:=1; {nachalnoe znachenie funkzii U} for i:=1 to k-1 do U:=U*(x[i]+x[k-i]); writeln; writeln; write ('Funkzija: u=',u:10:7); Repeat Until KeyPressed END. МОДУЛЬ ГЛОБАЛЬНИХ ОПИСІВ Unit Glob; {Имя модуля} Interface Const Len=100; Type T_Matr=array[1..Len,1..Len] of real; {Тип массива-матрицы} T_Vect=array[1..Len] of real; {Тип массива-вектора} End. СЕРВІСНИЙ МОДУЛЬ ОБСЛУГОВУВАННЯ МАТРИЦІ Unit KR_Srv2;{ Имя сервисного модуля} Interface Uses Glob; { Имя модуля с глобальными описаниями} Procedure Ztvor_M(M,N:byte;Var ma:T_Matr); { Описание процедуры создания матрицы} Procedure Print_M(Ma:T_Matr;M,N:byte); { Описание процедуры печати} Implementation Uses CRT; Procedure Ztvor_M(M,N:byte;Var ma:T_Matr); { Процедура создания матрицы} Var i,j:byte; { Рабочие переменные} Begin writeln (' Введите размерность матрицы A: числа M и N'); write('m='); read (m); write('n='); read(n); ClrScr; For i:=1 to m do For j:=1 to n do ma[i,j]:=(ABS(3.7-j)-2) *exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2))); End; Procedure Print_M(Ma:T_Matr;M,N:byte); { Процедура отображения матрицы} var j,i:byte; Begin write (' Выведите элементы матрицы a[i,j]'); writeln; writeln; For i:=1 to m do begin For j:=1 to n do write ('a[',i,’,’,j,']=',Ma[i,j]:10:7); { Отображение элементов матрицы} writeln; end; End; END. ГОЛОВНА ПРОГРАМА Program Matr_KR2; uses Crt,Glob,KR_SRV2; { Список используемых модулей } var i,j,k,m,n,l:integer; { Рабочие переменные } a:T_Matr; {Имя элементов матрицы А} x:T_Vect; {Имя элементов массива Х } u:real; {Имя вычисляемой функции } c:real; { Вспомогательная переменная для транспонирования матрицы } begin ClrScr; writeln(' Исходная матрица'); Ztvor_M(M,N,A); Print_M(A,M,N); { Оператор процедуры отображения матрицы } {Транспонирование матрицы } L:=1; {Начальное значение переменной для формирования начального значения параметра вложенного цикла (работа по столбцам) при транспонировании матрицы А } for i:=1 to m-1 do begin for j:=l to n do c:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=c; { Получение элементов транспонированной матрицы } L:=L+1 end; writeln ( ' Транспонированная матрица'); writeln; Print_M(A,M,N); { Оператор процедуры отображения матрицы } {Формирование массива X из транспонированной матрицы } k:=1; {Начальное значение формирователя индексов элементов массива X} for i:=1 to m do for j:=1 to n do if a[i,j]<2 then begin x[k]:=a[i,j];{Формирование элемента x[k]массива X } k:=k+1; end; {Вывод массива X} writeln(' Массив X'); writeln; for i:=1 to k-1 do write ('x[',i,']=', x[i]:10:7,' '); {Вывод элемента массива X} { Вычисление функции U} U:=1; {Начальное значение функции U} for i:=1 to k-1 do U:=U*(x[i]+x[k-i]); {Значение функции U} writeln; writeln; write ('u=',u:10:7); {Отображение результирующего значения функции U} Repeat Until KeyPressed END. РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ при m=n=3 і при однаковом форматі виведення для всіх чотирьох видів даних a[i,j]:10:7; Вихідна матриця a[1,1]=-3.7007064 a[1,2]=0.3092295 a[1,3]=-0.0910127 a[2,1]=-3.6028023 a[2,2]=0.9875200 a[2,3]= 1.1849153 a[3,1]=-0.5229830 a[3,2]= 1.2015703 a[3,3]= 1.6857605 Транспонована матриця a[1,1]=-3.7007064 a[1,2]=-3.6028023 a[1,3]= -0.5229830 a[2,1]= 0.3092295 a[2,2]= 0.9875200 a[2,3]= 1.2015703 a[3,1]=-0.0910127 a[3,2]= 1.1849153 a[3,3]= 1.6857605 Масив Х x[1]=-3.700706 x[2]=-3.6028023 x[3]=-0.5229830 x[4]=0.3092295 x[5]=0.9875200 x[6]=1.2015703 x[7]=-0.0910127 x[8]=1.1849153 x[9]=1.6857665 Значення функції: U=40.3382026 Результати ручних розрахунків співпадають з прогамними, що свідчить про правільність роботи програми. ВИКОРИСТОВАНА ЛІТЕРАТУРА А. И. Марченко, Л. М. Марченко. Программирование в среде TURBO Pascal 7.0. Киев “ВЕК+””, Москва “ДЕСС”, 1999. Ю.С. Бородич, А.Н. Вальвачев, Ф.И. Кузьмич. Паскаль для персональных компьютеров. Минск,”Вышэйшая школа”, БФ ГИТМП “НИКА”, 1991 Д.Б. Поляков, И.Ю. Круглов. Программирование в среде Турбо Паскаль , Москва , МАИ, А\О “РОСВУЗНАУКА”, 1992. Ф.Б. Бартків, Я.Т. Гринчишин, А.М. Ломакович, Ю.С. Рамский. TURBO PASCAL: Алгоритми и програми. Київ, «Вища школа», 1992.
Антиботан аватар за замовчуванням

31.03.2013 00:53

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!