#Отчет по теме 1 Шабанова Рания, А-03-24 ## 1 Изучение среды GNU Octave. ## 2 Настройка текущего каталога. Нажала на окно рядом с *Текущая папка:* и установила путь к папке ТЕМА1: ![скриншот выбора текущей папки](assets/figure1.png) ## 3 Настройка командного окна. Нажала на *Окно* и отметила галочками нужные закладки: ![скриншот настроенного интерфейса](assets/figure3.png) ## 4 Установка пути к папкам. В главном меню нажала "Правка"+"Установить путь" и добавила пути к папкам ТЕМА1 и ТЕМА2: ![скриншот выбора путей](assets/figure4.png) ## 5 Изучение работы со справкой. "Справка"+"Документация"+"На диске" -> GNU Octave Manual -> Function Index Команда help Пример работы команды: ```matlab >> help randn 'randn' is a built-in function from the file libinterp/corefcn/rand.cc -- X = randn (N) -- X = randn (M, N, ...) -- X = randn ([M N ...]) -- X = randn (..., "single") -- X = randn (..., "double") -- V = randn ("state") -- randn ("state", V) -- randn ("state", "reset") -- V = randn ("seed") -- randn ("seed", V) -- randn ("seed", "reset") Return a matrix with normally distributed random elements having zero mean and variance one. The arguments are handled the same as the arguments for ‘rand’. By default, ‘randn’ uses the Marsaglia and Tsang "Ziggurat technique" to transform from a uniform to a normal distribution. The class of the value returned can be controlled by a trailing "double" or "single" argument. These are the only valid classes. Reference: G. Marsaglia and W.W. Tsang, ‘Ziggurat Method for Generating Random Variables’, J. Statistical Software, vol 5, 2000, See also: rand, rande, randg, randp. Additional help for built-in functions and operators is available in the online version of the manual. Use the command 'doc ' to search the manual index. Help and information about Octave is also available on the WWW at https://www.octave.org and https://octave.discourse.group/c/help/ ``` Для дополнительно подгружаемых пакетов "Справка"+"Пакеты Octave" ## 6 Создание матриц и векторов. Из-за постоянных предупреждений воспользовалаь командой: ```matlab >> warning('off','all') ``` Создание матрицы со случайными, нормально распределенными элементами: ```matlab >>A = randn(4, 6) A = -0.4321 1.1729 0.3541 1.5892 0.4530 0.2627 -1.7323 -0.9788 -0.4989 1.6601 0.7393 0.2212 0.7755 -1.0102 0.2191 -0.2449 0.3585 0.2069 1.1003 0.5001 -0.2061 -2.0966 1.6449 -1.0841 ``` Создание матрицы со случайными, равномерно распределенными элементами в диапазоне от 0 до 1: ```matlab >> B = rand(4, 7) B = 0.373271 0.844238 0.711102 0.953539 0.219433 0.675295 0.340843 0.551754 0.356287 0.959939 0.909888 0.696343 0.642488 0.113784 0.084194 0.670743 0.578236 0.339736 0.720005 0.705143 0.967447 0.128237 0.483455 0.044278 0.968504 0.127631 0.899501 0.195310 ``` Создание вектора с целыми числами от 4 до 27: ```matlab >> C = 4 : 27 C = Columns 1 through 18: 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Columns 19 through 24: 22 23 24 25 26 27 ``` Создание символьного вектора: ```matlab >> H = 'This is a symbols vector' H = This is a symbols vector ``` Создание вектора-строки с двумя комплексными элементами: ```matlab >> L = [-2+23.1j, 3-5.6j] L = -2.0000 + 23.1000i 3.0000 - 5.6000i ``` ## 7 Операции с матрицами. Преобразование вектора С в матрицу с 6 столбцами: ```matlab >> D=reshape(C,[],6) D = 4 8 12 16 20 24 5 9 13 17 21 25 6 10 14 18 22 26 7 11 15 19 23 27 ``` Матричное перемножение матриц А и В с транспонированием матрицы В: ```matlab >> E=B'*A E = -0.910683 -0.123162 -0.151095 1.219653 0.818133 0.098530 0.070163 0.205633 0.168516 0.755192 1.681531 -0.084697 -1.472997 -0.667516 -0.109583 2.489169 1.311971 0.470816 -0.659044 0.368938 -0.241469 0.912002 2.819514 -0.527820 -0.602273 -1.087712 -0.138278 1.060741 1.082316 0.222294 0.131844 -0.099328 -0.112298 0.081094 2.513291 -0.509676 0.620796 -0.591256 0.235644 0.084094 0.906638 0.103147 ``` Создание матрицы путем горизонтального соединения матриц А и В: ```matlab >> F=[A,B] F = Columns 1 through 8: -0.432076 1.172859 0.354099 1.589192 0.452953 0.262740 0.373271 0.844238 -1.732292 -0.978753 -0.498940 1.660060 0.739344 0.221213 0.551754 0.356287 0.775511 -1.010206 0.219102 -0.244935 0.358536 0.206887 0.084194 0.670743 1.100337 0.500081 -0.206064 -2.096644 1.644885 -1.084062 0.128237 0.483455 Columns 9 through 13: 0.711102 0.953539 0.219433 0.675295 0.340843 0.959939 0.909888 0.696343 0.642488 0.113784 0.578236 0.339736 0.720005 0.705143 0.967447 0.044278 0.968504 0.127631 0.899501 0.195310 ``` Поэлементное перемножение матриц: ```matlab >> G=A.*D G = -1.7283 9.3829 4.2492 25.4271 9.0591 6.3058 -8.6615 -8.8088 -6.4862 28.2210 15.5262 5.5303 4.6531 -10.1021 3.0674 -4.4088 7.8878 5.3791 7.7024 5.5009 -3.0910 -39.8362 37.8323 -29.2697 ``` Поэлементное деление матрицы G на 4.5: ```matlab >> M=G./4.5 M = -0.3841 2.0851 0.9443 5.6505 2.0131 1.4013 -1.9248 -1.9575 -1.4414 6.2713 3.4503 1.2290 1.0340 -2.2449 0.6816 -0.9797 1.7528 1.1953 1.7116 1.2224 -0.6869 -8.8525 8.4072 -6.5044 ``` Поэлементное возведение в степень матрицы D: ```matlab >> DDD=D.^3 DDD = 64 512 1728 4096 8000 13824 125 729 2197 4913 9261 15625 216 1000 2744 5832 10648 17576 343 1331 3375 6859 12167 19683 ``` Создание логической матрицы, которая совпадает по размерам с матрицей D по заданному условию: ```matlab >> DL=D>=20 DL = 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 1 ``` Превращение матрицы в вектор-столбец: ```matlab >> Dstolb=D(:) Dstolb = 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ``` ## 8 Математические операции с матрицами. Корень элемента: ```matlab >> B1=sqrt(B) B1 = 0.6110 0.9188 0.8433 0.9765 0.4684 0.8218 0.5838 0.7428 0.5969 0.9798 0.9539 0.8345 0.8016 0.3373 0.2902 0.8190 0.7604 0.5829 0.8485 0.8397 0.9836 0.3581 0.6953 0.2104 0.9841 0.3573 0.9484 0.4419 ``` Логарифм элемента: ```matlab >> B2=log(B) B2 = -0.985451 -0.169321 -0.340939 -0.047575 -1.516709 -0.392605 -1.076334 -0.594652 -1.032019 -0.040885 -0.094434 -0.361912 -0.442407 -2.173455 -2.474630 -0.399370 -0.547774 -1.079588 -0.328497 -0.349355 -0.033094 -2.053872 -0.726797 -3.117275 -0.032002 -2.058612 -0.105915 -1.633166 ``` Синус элемента: ```matlab >> B3=sin(B) B3 = 0.364663 0.747465 0.652669 0.815469 0.217676 0.625128 0.334282 0.524182 0.348797 0.819157 0.789435 0.641417 0.599189 0.113538 0.084095 0.621568 0.546547 0.333238 0.659388 0.648143 0.823440 0.127886 0.464841 0.044263 0.824039 0.127285 0.783016 0.194071 ``` Другие операции с матрицами. Длина матрицы: ```matlab k=length(B1) k = 7 ``` Размер матрицы: ```matlab >> nm=size(B1) nm = 4 7 ``` Количество элементов в матрице: ```matlab >> elem=numel(B1) elem = 28 ``` Матрица из 20 элементов со значениями от 11.5 до 34.1: ```matlab >> NN=linspace(11.5,34.1,20) NN = Columns 1 through 10: 11.500 12.689 13.879 15.068 16.258 17.447 18.637 19.826 21.016 22.205 Columns 11 through 20: 23.395 24.584 25.774 26.963 28.153 29.342 30.532 31.721 32.911 34.100 ``` Единичная матрица 2х4: ```matlab >> FF=ones(2,4) FF = 1 1 1 1 1 1 1 1 ``` Нулевая квадратная матрица 5х5: ```matlab >> GG=zeros(5) GG = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ``` Элементы главной диагонали матрицы: ```matlab >> B1D=diag(B1) B1D = 0.6110 0.5969 0.7604 0.9841 ``` Расположение элементов по главной диагонали: ```matlab >> DB=diag(B1D) DB = Diagonal Matrix 0.6110 0 0 0 0 0.5969 0 0 0 0 0.7604 0 0 0 0 0.9841 ``` Сортировка значений матрицы по возрастанию: ```matlab >> BS1=sort(B) BS1 = 0.084194 0.356287 0.044278 0.339736 0.127631 0.642488 0.113784 0.128237 0.483455 0.578236 0.909888 0.219433 0.675295 0.195310 0.373271 0.670743 0.711102 0.953539 0.696343 0.705143 0.340843 0.551754 0.844238 0.959939 0.968504 0.720005 0.899501 0.967447 ``` Сортировка строк матрицы по возрастанию по определенному столбцу(): ```matlab >> BS2=sortrows(B,2) BS2 = 0.551754 0.356287 0.959939 0.909888 0.696343 0.642488 0.113784 0.128237 0.483455 0.044278 0.968504 0.127631 0.899501 0.195310 0.084194 0.670743 0.578236 0.339736 0.720005 0.705143 0.967447 0.373271 0.844238 0.711102 0.953539 0.219433 0.675295 0.340843 ``` Суммирование строк по колонне: ```matlab >> DS1=sum(D) DS1 = 22 38 54 70 86 102 ``` Суммирование столбоцов по строке: ```matlab >> DS2=sum(D,2) DS2 = 84 90 96 102 ``` Перемножение строк по столбцам: ```matlab DP1=prod(D) DP1 = 840 7920 32760 93024 212520 421200 ``` Нахождение определителя произведения матрицы на её же транспонированную матрицу: ```matlab dt=det(A*A') dt = 225.78 ``` Обратная матрицы для произведения матрицы А на её же транспонированную матрицу: ```matlab >> dinv=inv(A*A') dinv = 0.396533 -0.082236 0.287856 0.039764 -0.082236 0.209140 -0.061884 0.086233 0.287856 -0.061884 0.777679 -0.040941 0.039764 0.086233 -0.040941 0.161014 ``` ## 9 Индексация элементов матрицы: Извлечение элемента, находящегося на пересечении 3 строки и 5 столбца матрицы: ```matlab >> D1=D(3,5) D1 = 22 ``` Извлечение части 3 строки матрицы D с 4 столбца и до конца: ```matlab >> D2=D(3,4:end) D2 = 18 22 26 ``` Извлечение подматрицы из матрицы D строки со 2 по 3 и столбцы с 3 по 5: ```matlab >> D3=D(2:3,3:5) D3 = 13 17 21 14 18 22 ``` Извлечение элементов с 16 по 20 включительно из матрицы D как вектор: ```matlab >> D4=D(16:20) D4 = 19 20 21 22 23 ``` Извлечение подматрицы из D: строки 3–4 и столбцы 1, 3 и 6: ```matlab >> D5=D(3:4,[1,3,6]) D5 = 6 14 26 7 15 27 ``` ## 10 Изучение некоторых управляющих конструкций. Цикл по перечислению (С 1 по 6 столбец): ```matlab >> Dsum=0 Dsum = 0 >> for i=1:6 Dsum=Dsum+sqrt(D(2,i)) endfor Dsum = 2.2361 Dsum = 5.2361 Dsum = 8.8416 Dsum = 12.965 Dsum = 17.547 Dsum = 22.547 ``` Цикл пока выполняется условие (он продолжается, пока значение первого элемента матрицы D меньше 22): ```matlab >> Dsum2=0;i=1 i = 1 >> while (D(i)<22) Dsum2=Dsum2+sin(D(i)) i=i+1 endwhile Dsum2 = -0.7568 i = 2 Dsum2 = -1.7157 i = 3 Dsum2 = -1.9951 i = 4 Dsum2 = -1.3382 i = 5 Dsum2 = -0.3488 i = 6 Dsum2 = 0.063321 i = 7 Dsum2 = -0.4807 i = 8 Dsum2 = -1.4807 i = 9 Dsum2 = -2.0173 i = 10 Dsum2 = -1.5971 i = 11 Dsum2 = -0.6065 i = 12 Dsum2 = 0.043799 i = 13 Dsum2 = -0.2441 i = 14 Dsum2 = -1.2055 i = 15 Dsum2 = -1.9565 i = 16 Dsum2 = -1.8066 i = 17 Dsum2 = -0.8937 i = 18 Dsum2 = -0.057011 i = 19 ``` Условие if (проверка условия, что значение в матрице D в 3 строке и 5 столбце >=20) ```matlab >> if (D(3,5)>=20) printf('D(3,5)>=20') else printf('D(3,5)<20') endif D(3,5)>=20 ``` ## 11 Использование графических функций. Функция построения графиков: ```matlab >> plot(D(1,:),B([2,4],1:6)) ``` ![скриншот графика](assets/figure11.png) Функция расчета и построения гистограммы: ```matlab >> hist(A(:),6) ``` ![скриншот гистограммы](assets/figure11.1.png) Функция графика "Пирог": ```matlab >> pie(C) ``` ![скриншот пирога](assets/figure11.2.png) Функция столбчатой диаграммы: ```matlab >> bar(B) ``` ![скриншот диаграммы](assets/figure11.3.png) ## 12 Изучение работы с текстовым редактором среды. Создала файл и занесла в него команды из 9 пункта: ![скриншот команд](assets/figure12.png) ```matlab >> Prog1 D1 = 22 D2 = 18 22 26 D3 = 13 17 21 14 18 22 D4 = 19 20 21 22 23 D5 = 6 14 26 7 15 27 ``` ## 13 Файлы переменных. Создала файл переменных (Perem),перезапустила IDE, загрузила область переменных: ![скриншот конечный](assets/figure13.png)