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

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

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

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

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

Міністерство транспорту та зв'язку України Міністерство освіти і науки України Державний університет інформаційно - комунікаційних технологій Курсова робота з дисципліни «Інформатика». КАФЕДРА ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ Студента 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:02-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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