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
Тип роботи:
Курсова робота
Предмет:
Інформатика

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

Міністерство транспорту та зв'язку України Міністерство освіти і науки України Державний університет інформаційно - комунікаційних технологій Курсова робота з дисципліни «Інформатика». КАФЕДРА ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ Студента I курсу, групи ІМД-11 Спеціальність: ІТ Славов Олександр Вячеславович Залікови книжка № 10ІМ16 Перевірив: доцент Качанов П.Т. Консультант: доцент Качанов П.Т.,Шевченко Д. Оцінка: Дата: Київ 2011 ЗАВДАННЯ НА КУРСОВУ РОБОТУ Загальне завдання на курсову роботу 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. Індивідуальне завдання (Вар № 16); 1.Функція f(i,j)= i-3 ( 2 - |j-3|3 )(i+j)5 lg(|j-i|)-(|5,3 - e2j| )(-2)j 2.Компоненти вектора X - скалярний добуток головної діагоналі матриці на зворотній i- й рядок, якщо сума елементів головної діагоналі перевищує її максимальний елемент, інакше за вектор X взяти головну діагональ. 3.  Пояснювальний матеріал. I. Відповідно до пункту №1завдання (формування матриці) 1)Матриця вводиться по рядках, тому зовнішнім циклом з параметром I= 1-n , а внутрішнім - цикл з параметром J=1- m. Згідно нашій функції, яку ми вводимо,є певні обставини. Це ті ,що синтаксис видасть помилку 207 якщо буде :а)Від’ємний логарифм.б) Від’ємний корінь та т.д. У нашому випадку можливо Від’ємний логарифм lg(|j-i|). Тому ми його перевіряемо у циклі. 2)спочатку ми знаходимо сумму елементів гол.діагонали.головна діагональ записуеться у вигляді a[i,i]. Потім треба знайти максимальний елемент гол діагоналі. Ми вважаемо що макс. елемент знаходиться на першій позиції,потім умовою max<a[i,i] ми перевіряемо цю умову ,якщо ця умова виконується,то max:=a[i,i] ,з цього виходе,що но в MAX дійсно знаходится максимальний елемент. Потім перевіряемо нашу умову: «якщо сума елементів головної діагоналі перевищує її максимальний елемент». Вона буде мати вигляд summa>max. Далі якщо умова дійсна виконуються наступні дії: Беремо гол діагональ a[i,i] та множимо ії на зворотній i-тий рядок. i-тий рядок буде мати вігляд a[n-i+1,j] ,оскільки n ми перебираемо стовпці, отже n=4 це останій елемент останього стовпчика, i змінюеться у нас від 1 до n тобто до 4. Отже математично ми підставимо та отримаемо останій i-тий рядок. Множимо головну діагональ на i-тий рядок a[i,i]*a[n-i+1,j] . А якщо наша умова не виконуеться ,тоді ми беремо гол.діагональ. тобто наше головне завданнє буде мати вигляд: Summa>max Then x[i]:=a[i,i]*a[n-i+1,j] Else x[i]:=a[i,i]; Отже якщо на головній діагоналі будуть усі додатні елементи,тоді вочевидь,що сумма буде завжди БіЛЬШОЮ від максимального елемента,а якщо знайдеться хоча б один від’ємний елемент ,тоді сумма не буде більшою, в залежності від від’ємних елементів головної діагонали. A11 A12 A13 A14  A21 A22 A23 A24  A31 A32 A33 A34  A41 A42 A43 A44    Опис масивів: x:real (массив). a:real (матрица,двухмерный массив). Опис змінних: i,j: integer; (индексы) . n,m: integer; (кол-ство строк,столбцов). b,c: integer; (номер в списке,номер по зачетке. Ч0исла для подсчета функции от вектора x[i]). u:real; (значения функции) . max,summa:real; (переменные которые служат для проверки условия на «да» или «нет»). БАЗОВА ПРОГРАМА РЕАЛІЗАЦІЇ АЛГОРИТМУ program zadacha; {формирования квадратной матрицы по выражению для A[i,j], вектора Х по условию задачи в матрице и вычисления функции U} uses crt; {Используемый библиотечный модуль} const len=20;c=16;b=6; {Задаем постоянные числа} type mtx=array[1..len,1..len] of real; {Пользовательский тип mtx} mas=array[1..len] of real; {Пользовательский тип mas} var a: mtx; {Матрица А} x: mas; {Массив Х} i,j,n,k,m: integer; {Рабочие переменные : параметры цикла и размерности} summa,max:real; {Рабочии переменныи} esp,p1,p2,p3,p4,p5,p6,p7,p8,dob: real; {переменные для подсчета функції и формирования квадратной матрици } u:real; {Имя вычисляемой функции} BEGIN ClrScr; Writeln('Vvedite razmernost [m*n]:'); Write('m='); readln(m); Write('n='); readln(n); ClrScr; for i:=1 to m do {Внешний цикл по строкам} begin for j:=1 to n do {Вложенный цикл по столбцам} begin p1:=abs(j-3); p2:=2-p1*p1*p1; p4:=abs(j-i); esp:=2.718; p5:=exp(2*j*ln(esp)); p6:=5.3-p5; p7:=abs(p6); dob:=1; for k:=1 to j do dob:=dob*(-2); p8:=dob; if p4=0 then a[i,j]:=-p7*p8 else p3:=0.43*ln(p4); a[i,j]:=exp(-3*ln(i))*p2*exp(5*ln(i+j))*p3-p7*p8; {формирования матрици по заданной функции} end end; {Формирует вектор Х,согласно данному заданию} summa:=0; for i:=1 to n do {Внешний цикл по строкам} summa:=a[i,i]+summa; {Внешний цикл по столбцам} max:=a[1,1]; {принимает максимум за первый елемент ряда и строки } for i:=1 to n do if a[i,i]>max then {проверяя условия максимум на первой позиции } max:=a[i,i]; for i:=1 to n do {Внешний цикл по строкам} begin if summa>max {проверяем условия сумма главной диагонали превышает максималый елемент гл.диагонали} then x[i]:=a[i,i]*a[j,n-i+1] {Условия выполняется «ДА»} else x[i]:=a[i,i]; {Условие не исполняется «НЕТ»} end; { Вычисление функции U} if c<b then begin {присваиваем функции первый елемент,что б было с чем сравнивать} u:=abs(x[1]); for i:=2 to n do {Внешний цикл по строкам} if abs(x[i])<u then u:=abs(x[i]) {Проверка условия} end else begin u:=x[i]+1; for i:=2 to n do begin if x[i]+1>u {Проверка условия} then u:=x[i]+1; end; end; {Вывод матрицы А по строкам} Writeln('Isxodnaya matrica:'); for i:=1 to m do {Внешний цикл по строкам} begin for j:=1 to n do {Вложенный цикл по столбцам} begin if j=n then Writeln('a[',i,',',j,']=',a[i,j]:4:3) {Вывод элемента a[i,j]матрицы А} else Write('a[',i,',',j,']=',a[i,j]:4:3,' '); end; end; writeln; {Оператор для перехода на очередную строку} writeln ('vector X:'); {Вывод массива Х или вектрa} for i:=1 to n do writeln ('x[',i,']=',x[i]:5:2,' '); writeln; {Оператор для перехода на очередную строку} {Вывод значения функции U} writeln ('FUNCTION:'); writeln ('U= ',u:5:2); repeat until keypressed END. ПРОГРАМА З ВИКОРИСТАННЯМ ПРОЦЕДУР program zada4a; {формирования квадратной матрицы по выражению для A[i,j], вектора Х по условию задачи в матрице и вычисления функции U} uses crt; {Используемый библиотечный модуль} const len=20;c=16;b=6; {Задаем постоянные числа} type mtx=array[1..len,1..len] of real; {Пользовательский тип mtx} mas=array[1..len] of real; {Пользовательский тип mas} var a: mtx; ; {Матрица А} x: mas; {Массив Х} n,m: integer; {Рабочие переменные размерности} u: real; {Имя вычисляемой функции} procedure vvod (nsize,msize:integer; var mat:mtx); {Оператор процедуры,описание параметров, формирования квадратной матрицы по функции} var i,j,k:integer; esp,p1,p2,p3,p4,p5,p6,p7,p8,dob:real; begin for i:=1 to nsize do {Внешний цикл по строкам} begin for j:=1 to msize do {Внешний цикл по столбцам} begin p1:=abs(j-3); p2:=2-p1*p1*p1; p4:=abs(j-i); esp:=2.718; p5:=exp(2*j*ln(esp)); p6:=5.3-p5; p7:=abs(p6); dob:=1; for k:=1 to j do dob:=dob*(-2); p8:=dob; if p4=0 then a[i,j]:=-p7*p8 else p3:=0.43*ln(p4); mat[i,j]:=exp(-3*ln(i))*p2*exp(5*ln(i+j))*p3-p7*p8;{формирования матрици по заданной функции} end end end; procedure form_vectora(mat:mtx; nsize:integer; var vect:mas); {Оператор процедуры,описание параметров, формирование вектра X} var summa,max:real; i,j:integer; begin summa:=0; {принимает сумму гл.диагонали за 0 } max:=mat[1,1]; {принимает максимум за первый елемент ряда и строки } for i:=1 to nsize do begin {Внешний цикл по строкам} summa:=mat[i,i]+summa; if mat[i,i]>max then {проверяя условия максимум на первой позиции } max:=mat[i,i]; end; for i:=1 to nsize do {Внешний цикл по строкам} if summa<max {проверяем условия сумма главной диагонали превышает максималый елемент гл.диагонали} then vect[i]:=mat[i,i]*mat[nsize,nsize-i+1] {Условия выполняется «ДА»} else vect[i]:=mat[i,i]; {Условие не исполняется «НЕТ»} end; function func(vect:mas; nsize:integer; bFunc,cFunc:real):real; {Оператор процедуры,описание параметров, Вычисления функции} var u:real; i:integer; begin if cFunc<bFunc then begin {присваиваем функции первый елемент,что б было с чем сравнивать} u:=abs(vect[1]); for i:=2 to nsize do {Внешний цикл по строкам} if abs(vect[i])<u then u:=abs(vect[i]); {Проверка условия} end else begin u:=vect[1]+1; for i:=2 to nsize do if vect[i]+1>u then u:=vect[i]+1; {Проверка условия} end; func:=u; end; {Вывод матрицы А по строкам} procedure vivod(mat:mtx; nsize,msize:integer); {Оператор процедуры,описание параметров} var i,j:integer; begin Writeln('Isxodnaya matrica:'); {vivod matrix} for i:=1 to nsize do {Внешний цикл по строкам} begin for j:=1 to msize do {Внешний цикл по столбцам} begin if j=nsize then Writeln('a[',i,',',j,']=',mat[i,j]:4:3) {Вывод элемента a[i,j]матрицы А} else Write('a[',i,',',j,']=',mat[i,j]:4:3,' '); end; end; writeln; {Оператор для перехода на очередную строку} end; {Вывод массива Х или вектрa} procedure vivod_vector(vect:mas; nsize:integer); {Оператор процедуры,описание параметров} var i:integer; begin for i:=1 to nsize do write ('x[',i,']=',vect[i]:5:2,' '); writeln; {Оператор для перехода на очередную строку} end; BEGIN ClrScr; Writeln('Vvedite razmernost matrix [m*n]:'); Write('n='); readln(n); Write('m='); readln(m); ClrScr; vvod(n,m,a); form_vectora(a,n,x); vivod(a,n,m); writeln ('vektor X:'); vivod_vector(x,n); writeln; {Оператор для перехода на очередную строку} {Вывод значения функции U} writeln ('FUNCTION:'); u:=func(x,n,b,c); writeln ('U= ',u:5:2); readkey; END. СЕРВІСНИЙ МОДУЛЬ ОБСЛУГОВУВАННЯ МАТРИЦІ unit module; ;{ Имя сервисного модуля} interface const len=20;c=16;b=6; type mtr=array[1..len,1..len] of real; mas=array[1..len] of real; procedure vvod (nsize,msize:integer; var mat:mtr); ); { Описание процедуры создания матрицы} procedure form_vectora(mat:mtr; nsize:integer; var vect:mas); {Формирование вектора Х} function func(vect:mas; nsize:integer; bFunc,cFunc:real):real; {Вычисления функции U} procedure vivod(mat:mtr; nsize,msize:integer); {Вывод матрици А} procedure vivod_vector(vect:mas; nsize:integer); {Вывод вектора Х} implementation procedure vvod (nsize,msize:integer; var mat:mtr); var i,j,k:integer; esp,p1,p2,p3,p4,p5,p6,p7,p8,dob:real; begin for i:=1 to nsize do begin for j:=1 to msize do begin p1:=abs(j-3); p2:=2-p1*p1*p1; p4:=abs(j-i); esp:=2.718; p5:=exp(2*j*ln(esp)); p6:=5.3-p5; p7:=abs(p6); dob:=1; for k:=1 to j do dob:=dob*(-2); p8:=dob; if p4=0 then mat[i,j]:=-p7*p8 else p3:=0.43*ln(p4); mat[i,j]:=exp(-3*ln(i))*p2*exp(5*ln(i+j))*p3-p7*p8; end end end; procedure form_vectora(mat:mtr; nsize:integer; var vect:mas); var summa,max:real; i,j:integer; begin summa:=0; max:=mat[1,1]; for i:=1 to nsize do begin summa:=mat[i,i]+summa; if mat[i,i]>max then max:=mat[i,i]; end; for i:=1 to nsize do if summa>max {glavnoe yslovie} then vect[i]:=mat[i,i]*mat[nsize,nsize-i+1] else vect[i]:=mat[i,i]; end; function func(vect:mas; nsize:integer; bFunc,cFunc:real):real; var u:real; i:integer; begin if cFunc<bFunc then begin u:=abs(vect[1]); for i:=2 to nsize do if abs(vect[i])<u then u:=abs(vect[i]); end else begin u:=vect[1]+1; for i:=2 to nsize do if vect[i]+1>u then u:=vect[i]+1; end; func:=u; end; procedure vivod(mat:mtr; nsize,msize:integer); var i,j:integer; begin Writeln('Isxodnaya matrica:'); {vivod matrix} for i:=1 to nsize do begin for j:=1 to msize do begin if j=nsize then Writeln('a[',i,',',j,']=',mat[i,j]:4:3) else Write('a[',i,',',j,']=',mat[i,j]:4:3,' '); end; end; writeln; end; procedure vivod_vector(vect:mas; nsize:integer); var i:integer; begin for i:=1 to nsize do write ('x[',i,']=',vect[i]:5:2,' '); writeln; {Оператор для перехода на очередную строку} end; END. ГОЛОВНА ПРОГРАМА program zada4a; {формирования квадратной матрицы по выражению для A[i,j], вектора Х по условию задачи в матрице и вычисления функции U} uses crt,module; { Список используемых модулей } var a: mtr; ; {Имя элементов матрицы А} x: mas; {Имя элементов массива Х } n,m: integer; { Рабочие переменные размерности } u: real; ; {Имя вычисляемой функции } BEGIN ClrScr; Writeln('Vvedite razmernost matrix [m*n]:'); Write('n='); readln(n); Write('m='); readln(m); ClrScr; vvod(n,m,a); ); { Описание процедуры формировка матрици по функции} form_vectora(a,n,x); {Формирование вектора Х из матрици} vivod(a,n,m); {Вывод матрици А} writeln ('vektor X:'); vivod_vector(x,n); {Вывод вектора Х} writeln; {Оператор для перехода на очередную строку} writeln ('FUNCTION:'); u:=func(x,n,b,c); {Вычисления функции U} writeln ('U= ',u:5:2); Repeat until keypressed END. РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИ при m=n=3 і при однаковом форматі виведення для всіх чотирьох видів даних a[i,j]:4:2; Вихідна матриця a[1,1]= 4.175 a[1,2]= -197.102 a[1,3]= 3793.436 a[2,1]= 4.175 a[2,2]= -197.102 a[2,3]= 3183.023 a[3,1]= -63.649 a[3,2]= -197.102 a[3,3]= 3183.023 Масив Х x[1]=4.18 x[2]=-197.10 x[3]=3183.02 Значення функції: U=3184.02317 Результати ручних розрахунків співпадають з прогамними, що свідчить про правільність роботи програми.
Антиботан аватар за замовчуванням

08.02.2013 00:57

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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