Отчет по лабораторной работе № 1 по дисциплине: «Компьютерное моделирование» на тему: «Программирование в MatLab» Выполнил: Батищев Д.С. Проверила: Голощапова В.А. Урсол Д.В. Белгород 2012 1. Вычислить произведение элементов вектора X ( x1 , x2 , x3 ,...) , не превосходящих среднее арифметическое значение его элементов. function res = task1(x) mm = 0; res = 0; for i = 1 : 1 : length(x) mm = (mm + x(1, i)) / i; end; mm for i = 1 : 1 : length(x) if( x(1, i) < mm ) res = res * x(1, i); end; end; end Листинг 1. Файл task1.m Рис. 1. Выполнение 1 задания. 2. Определить количество положительных элементов вектора Х, расположенных между его максимальным и минимальным элементами. function res = task2(x) min = 0; minp = 0; max = 0; maxp = 0; res = 0; for i = 1 : 1 : length(x) min = x(1, i); minp = i; max = x(1, i); maxp = i; for j = length(x) - i + 1 : 1 : length(x) % min elemen if( x(1, j) < min ) min = x(1, j); minp = j; end; %max element if( x(1, j) > max ) max = x(1, j); maxp = j; end; end; end; bp = 0; ep = 0; if( minp bp = ep = else bp = ep = end; > maxp ) maxp; minp; minp; maxp; for k = bp + 1 : 1 : ep - 1 if( x(1, k) > 0 ) res = res + 1; end; end; end Листинг 2. Файл task2.m Рис. 2. Количество положительных элементов. 3. Заменить положительные элементы вектора Х суммой всех его отрицательных элементов. function res = task3(x) ms = 0; res = 0; for i = 1 : 1 : length(x) if( x(1, i) < 0) ms = ms + x(1, i); end; end; for i = 1 : 1 : length(x) if( x(1, i) > 0 ) x(1, i) = ms; end; end; res = x; end Листинг 3. Файл task3.m Рис. 3. Замена положительных элементов суммой отрицательных. 4. Заполнить квадратную матрицу A размерности n на n (n=5), каждый элемент a ij которой определяется с помощью вектора X следующим образом: i j, i j aij xi j, i j i 2 j 2 , i j function res = task4(x) res = 0; m = (5:5); for i = 1 : 1 : 5 for j = 1 : 1 : 5 if( i > j ) m(i, j) = (i - j); elseif( i == j ) m(i, j) = ( x(1, i) + j ); elseif( i < j ) m(i, j) = ( i^2 + j^2 ); end; end; end; res = m; end Листинг 4. Файл task4.m Рис. 4. Замена элементов матрицы по условию. 5. Подсчитать число единиц в полученной матрице А. function res = task5(x) s = size(x); res = 0; for i = 1 : 1 : s(1, 1) for j = 1 : 1 : s(1, 2) if( x(i, j) == 1 ) res = res + 1; end; end; end; end Листинг 5. Файл task5.m Рис. 5. Количество единиц в матрице. 6. Просуммировать положительные элементы лежащие ниже главной function res = task6(x) s = size(x); res = 0; for i = 1 : 1 : s(1, 1) for j = 1 : 1 : s(1, 2) if( (i > j) && (x(i, j) > 0) ) res = res + x(i, j); end; end; end; end function res = task7(x, s) матрицы А, диагонали. res = 0; for i = 1 : 1 : s for j = 1 : 1 : s res = res + ( (x ^ (i + j)) / ( (i + j) ^ 2 ) ); end; end; end Листинг 6. Файл task6.m Рис. 6. Сумма элементов ниже главной диагонали. 7. Вычислить n сумму заданного x x1 , при n=5: x 2 j 1 (i j ) s( x ) i 1 для i j n function res = task7(x, s) res = 0; for i = 1 : 1 : s for j = 1 : 1 : s res = res + ( (x ^ (i + j)) / ( (i + j) ^ 2 ) ); end; end; end Листинг 7. Файл task7.m Рис. 7. Сумма. 8. Для полученной матрицы A (aij ) и заданного x x1 (n=5) найти значение выражения: n n w( x ) x aij i 1 j 1 function res = task8(a, x) res = 0; s = size(a); for i = 1 : 1 tmp = 1; for j = 1 tmp = end; res = res end; : s(1,1) : 1 : s(1,2) tmp * a(i, j); + tmp; res = x * res; end Листинг 8. Файл task8.m Рис. 8. Значение выражения. 9. По заданному x x1 найти максимальное значение n, для которого следующая сумма не превосходит 100: n s ( x ) kx k k 1 function res = task9(x) res = 1; tmp = 1; while( tmp < 100 ) for k = 1 : 1 : res tmp = tmp + (k * (x ^ k)); end; res = res + 1; end; end Листинг 9. Файл task9.m Рис. 9. Результат выполнения задания 9. 10. Построить модель поведения некоторого объекта, а именно, вычислить сумму s( x ) k 0 xk с заданной точностью =0.001. k! Суммировать следует пока разность соседних слагаемых превосходит . Сравнить результат с точным значением, ex построив графики и s(x) для x [ x1 , x2 ] . function res = task10(x) n = 1; p = 0; e = 0.01; res = x(1) / 1; xf = []; yf = []; ye = []; while abs(res - p) > e p = res; res = 0; n = n + 1; for i = 0 : 1 : n res = res + ( (x(1) ^ i) / factorial(i) ); end; xf(1, i) = n; yf(1, i) = res; end; ye = exp(yf) hold on; plot(xf, yf, 'g-'); plot(xf, ye, 'r-'); end Листинг 10. Файл task10.m Рис. 10. График 10 задания. 11. i Xi Yi Ri 1 0.4 3 1 Построить модель определения покрытия радиостанциями некоторой географической точки. Пусть заданы окружности, координаты их центров содержатся в массивах X и Y, а радиусы в массиве R. Известны координаты некоторой точки Т ( x0 , y0 ) . Для всех вариантов: x0 0, y0 0 . Требуется вывести график, на котором маркером отмечено положение точки, синим цветом изображены те окружности, внутри которых лежит точка, а остальные окружности нарисованы красным цветом. 2 3 3 2 3 -4 4 3 4 -3 3 1 5 5 3 2 6 -7 5 3 7 8 2 1 8 -3 1 2 9 -2 0 3 function task11(x, y, r) maxc = x(1, 1); maxr = r(1, 1); for i = 1: 1 : length(x) maxc = x(1, i); if( x(1, i) > maxc ) maxc = x(1, i); end; if( y(1, i) > maxc ) maxc = y(1, i); end; if( r(1, i) > maxr ) maxr = r(1, i); end; end; s = maxc + maxr + 1; plot(s, s); for i = 1 : 1 : length(x); C = [x(i), y(i)]; R = r(i); T = 0 : pi/180 : 2*pi; F1 = R * cos(T) + C(1); F2 = R * sin(T) + C(2); if( (r(i) ^ 2) > ((x(i) ^ 2) + (y(i) ^ 2)) ) plot(F1, F2, 'b-'); else plot(F1, F2, 'r-'); grid on; end; end; end Листинг 11. Файл task11.m 10 1 2 2 Рис. 11. График задания 11.