# Отчет по теме 2 Бакайкин Константин, А-03-24 ## 1 Настройка текущего каталога: Нажал на окно рядом с *Текущая папка*: и установил путь к папке ТЕМА2: ![Скриншот выбора текущей папки](assets/figure0.png) ## 2 Изучение и работа с файлом dan_vuz.txt - Изучили файл и проанализировали его - Прочитали данные из файла: ```matlab >> XX=load('dan_vuz.txt') XX = Columns 1 through 9: 1.9700e+02 1.3717e+06 8.0000e+00 4.0000e+00 2.0000e+00 5.3000e+01 7.0000e+00 7.6000e+01 1.3000e+01 1.9800e+02 7.3820e+05 4.0000e+00 5.0000e+00 6.0000e+00 7.1000e+01 5.0000e+00 3.6000e+01 1.3000e+01 1.9900e+02 2.4167e+05 1.0000e+00 0 1.0000e+00 5.0000e+00 5.0000e+00 2.0000e+00 0 2.0000e+02 6.1990e+05 3.0000e+00 1.0000e+00 1.0000e+00 2.8000e+01 0 2.4000e+01 0 2.0100e+02 1.7553e+06 7.0000e+00 1.0000e+01 6.0000e+00 5.4000e+01 7.0000e+00 4.6000e+01 2.0000e+00 2.0200e+02 5.7215e+05 0 2.0000e+00 2.0000e+00 2.2000e+01 7.0000e+00 1.7000e+01 0 2.0300e+02 1.4322e+06 0 6.0000e+00 1.1000e+01 3.0000e+01 8.0000e+00 8.8000e+01 0 2.0400e+02 1.3277e+06 5.0000e+00 2.0000e+00 0 7.8000e+01 3.0000e+00 4.0000e+01 6.0000e+00 2.0500e+02 4.9080e+05 7.0000e+00 0 0 2.0000e+01 0 3.0000e+01 1.2000e+01 ... Columns 10 through 15: 0 1.0000e+00 5.0000e+00 5.0000e+00 8.7000e+01 9.6000e+01 0 4.0000e+00 0 0 4.0000e+01 3.3000e+01 0 2.0000e+00 0 0 1.1000e+01 6.0000e+00 0 0 3.0000e+00 0 1.6000e+01 1.4000e+01 0 3.0000e+00 2.0000e+00 0 1.6800e+02 4.1000e+01 0 0 2.0000e+00 1.0000e+00 1.8000e+01 1.0000e+01 ... ``` - Проверили размерность матрицы XX: ```matlab >> size(XX) ans = 290 15 ``` Так как строк 290, то данные представлены о 290 вузах - Выделили отдельную матрицу под данные о результативности: ```matlab >> X=XX(:,3:13) X = 8 4 2 53 7 76 13 0 1 5 5 4 5 6 71 5 36 13 0 4 0 0 1 0 1 5 5 2 0 0 2 0 0 3 1 1 28 0 24 0 0 0 3 0 7 10 6 54 7 46 2 0 3 2 0 0 2 2 22 7 17 0 0 0 2 1 0 6 11 30 8 88 0 0 11 14 2 5 2 0 78 3 40 6 0 10 9 0 7 0 0 20 0 30 12 0 6 1 15 1 1 1 12 3 13 3 0 1 2 0 8 4 3 33 1 37 8 0 3 6 3 9 5 6 24 8 36 5 0 1 4 14 5 5 4 57 7 56 25 0 0 12 1 1 4 0 7 0 1 3 0 0 0 0 2 8 0 83 6 70 4 0 6 5 0 1 0 0 0 0 6 0 0 0 2 0 2 28 8 326 76 213 21 0 1 22 1 1 1 1 42 2 0 1 0 0 1 5 1 0 0 13 0 0 0 0 0 0 0 3 2 2 76 8 92 21 0 0 12 5 0 1 0 7 1 7 2 0 3 1 0 7 2 1 70 0 23 27 0 5 9 7 3 0 0 11 0 3 0 0 0 0 0 10 9 4 23 0 35 0 0 0 12 3 22 3 7 46 0 7 11 0 0 2 0 ... ``` - Составили матрицу корреляций между показателями результативности ```matlab >> R=corr(X) R = Columns 1 through 9: 1.0000e+00 4.4320e-01 4.5229e-01 4.4779e-01 3.8123e-01 4.6516e-01 3.1487e-01 6.5579e-02 2.9153e-01 4.4320e-01 1.0000e+00 8.5319e-01 8.5331e-01 8.6240e-01 8.5436e-01 5.5145e-01 2.5082e-02 4.2348e-01 4.5229e-01 8.5319e-01 1.0000e+00 8.4660e-01 8.8651e-01 9.0335e-01 5.5091e-01 3.8840e-03 4.4396e-01 4.4779e-01 8.5331e-01 8.4660e-01 1.0000e+00 8.7038e-01 9.3849e-01 7.0924e-01 4.9500e-02 4.5873e-01 3.8123e-01 8.6240e-01 8.8651e-01 8.7038e-01 1.0000e+00 9.3605e-01 5.7668e-01 3.7562e-02 3.8322e-01 4.6516e-01 8.5436e-01 9.0335e-01 9.3849e-01 9.3605e-01 1.0000e+00 6.3033e-01 4.7121e-02 4.7592e-01 3.1487e-01 5.5145e-01 5.5091e-01 7.0924e-01 5.7668e-01 6.3033e-01 1.0000e+00 7.9448e-02 4.1878e-01 6.5579e-02 2.5082e-02 3.8840e-03 4.9500e-02 3.7562e-02 4.7121e-02 7.9448e-02 1.0000e+00 4.7985e-02 2.9153e-01 4.2348e-01 4.4396e-01 4.5873e-01 3.8322e-01 4.7592e-01 4.1878e-01 4.7985e-02 1.0000e+00 4.8811e-01 8.2170e-01 7.8358e-01 8.5183e-01 7.7266e-01 8.3810e-01 6.2936e-01 5.6462e-02 6.2616e-01 3.9815e-01 2.6183e-01 2.6408e-01 3.4420e-01 1.8751e-01 3.3118e-01 2.8287e-01 1.3662e-01 4.5537e-01 Columns 10 and 11: 4.8811e-01 3.9815e-01 8.2170e-01 2.6183e-01 7.8358e-01 2.6408e-01 8.5183e-01 3.4420e-01 7.7266e-01 1.8751e-01 8.3810e-01 3.3118e-01 6.2936e-01 2.8287e-01 5.6462e-02 1.3662e-01 6.2616e-01 4.5537e-01 1.0000e+00 3.8799e-01 3.8799e-01 1.0000e+00 ``` Используем метод главных компонентов: - получаем собственные значения и собственные векторы от квадратичной фор-мы ```matlab >> [vect,lambda]=eig(X'*X) vect = Columns 1 through 9: 1.3928e-03 3.7187e-02 -6.5276e-02 1.1402e-01 -5.7482e-02 -4.3369e-01 -8.6174e-01 1.8078e-02 -2.0942e-01 -8.0998e-04 6.0909e-01 3.8181e-01 -5.6588e-01 -2.6231e-01 2.2396e-01 -1.8894e-01 -2.6535e-02 7.3599e-02 -7.5396e-03 -4.5900e-01 -5.2153e-01 -6.7233e-01 -1.9752e-01 9.4377e-02 -1.1098e-01 -3.7697e-03 2.9602e-02 -1.5197e-04 -2.3868e-03 -3.9384e-02 2.0471e-02 2.9085e-02 -4.2879e-02 3.9810e-02 -2.5705e-01 1.7315e-01 1.0985e-03 -2.1296e-02 -1.7772e-02 1.0189e-01 1.5147e-01 2.9246e-02 -2.2268e-01 9.3732e-02 8.4203e-01 4.6341e-05 2.4446e-02 3.4514e-02 6.8266e-03 -2.8773e-02 -3.6347e-02 1.2360e-01 5.5571e-02 -4.0806e-01 1.1860e-03 4.2558e-03 2.3496e-02 -4.8185e-02 -1.5673e-02 -5.8142e-02 5.8108e-02 9.5701e-01 5.2365e-03 -9.9994e-01 5.6340e-04 6.5198e-03 4.0470e-03 7.5475e-03 1.2608e-03 -2.3724e-03 1.4645e-03 -1.0271e-03 -1.6282e-03 4.6826e-01 -6.5978e-01 2.6872e-01 2.8869e-02 4.9535e-01 -1.2025e-01 5.8771e-02 -9.1452e-02 1.7002e-03 -4.2581e-01 3.3001e-01 2.8074e-01 -3.9004e-01 6.2610e-01 -2.7487e-01 3.6416e-02 -5.9676e-02 7.7010e-03 -1.2368e-01 1.7350e-01 -2.2481e-01 8.4320e-01 3.2876e-01 -2.2260e-01 1.8627e-02 -1.7997e-01 Columns 10 and 11: 4.4068e-02 3.5306e-02 6.2111e-03 4.6772e-02 -4.1502e-02 4.8953e-02 7.2027e-01 6.1556e-01 -3.7246e-01 2.4277e-01 -5.1787e-01 7.3685e-01 2.5496e-01 9.5893e-02 5.5851e-04 1.6945e-04 2.0459e-02 1.7911e-02 5.3342e-02 5.9523e-02 4.8313e-02 1.7425e-02 lambda = Diagonal Matrix Columns 1 through 9: 2.2947e+01 0 0 0 0 0 0 0 0 0 1.9317e+03 0 0 0 0 0 0 0 0 0 2.5940e+03 0 0 0 0 0 0 0 0 0 3.4573e+03 0 0 0 0 0 0 0 0 0 5.6252e+03 0 0 0 0 0 0 0 0 0 8.6721e+03 0 0 0 0 0 0 0 0 0 1.8915e+04 0 0 0 0 0 0 0 0 0 4.7523e+04 0 0 0 0 0 0 0 0 0 5.7484e+04 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 10 and 11: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.2565e+05 0 0 7.4946e+06 ``` - Выделяем данные из гл. диагонали матрицы lambda в отдельный вектор и представляем их на экране с заголовком ```matlab >> Sobst=diag(lambda); >> fprintf('Eigenvalues:\n %f \n',Sobst) Eigenvalues: 22.946585 Eigenvalues: 1931.665464 Eigenvalues: 2593.979592 Eigenvalues: 3457.339562 Eigenvalues: 5625.151474 Eigenvalues: 8672.065947 Eigenvalues: 18914.627989 Eigenvalues: 47522.678185 Eigenvalues: 57483.681267 Eigenvalues: 225653.068540 Eigenvalues: 7494628.795394 >> fprintf('\n') ``` - Выделяем наиб. собственное знач. и соответствующий ему собственный вектор ```matlab SobMax=Sobst(end) SobMax = 7.4946e+06 >> GlComp=vect(:,end) GlComp = 3.5306e-02 4.6772e-02 4.8953e-02 6.1556e-01 2.4277e-01 7.3685e-01 9.5893e-02 1.6945e-04 1.7911e-02 5.9523e-02 1.7425e-02 ``` - Рассчитали долю информации о результативности НИР ```matlab >> Delt=100*SobMax/sum(Sobst) Delt = 95.273 >> fprintf('Delta= %d \n ',round(Delt)) Delta= 95 ``` - Рассчитали оценки обобщенной результативности и отобразили с кодом Вуза ```matlab >> Res=X*GlComp Res = 9.2542e+01 7.3433e+01 5.8855e+00 3.5300e+01 7.0208e+01 2.8096e+01 8.7136e+01 7.9776e+01 3.6243e+01 1.8250e+01 4.9667e+01 4.5067e+01 8.1785e+01 5.5559e+00 1.0536e+02 4.5755e+00 3.8120e+02 2.6713e+01 8.0376e+00 1.1963e+02 1.0061e+01 6.3763e+01 9.0877e+00 4.1684e+01 3.5907e+01 7.6140e+01 2.3753e+01 1.4222e+02 6.7756e+01 2.0598e+01 7.6819e+01 1.0428e+02 1.8542e+01 4.4740e+00 3.5809e+00 2.2476e+02 2.6864e+01 2.1291e+02 5.0922e+01 3.3628e+01 4.2168e+01 1.0370e+02 1.3606e+02 ... fprintf(' Results \n ') Results >> fprintf('%d %f \n ',[XX(:,1),Res] ') 197 92.541636 198 73.432513 199 5.885468 200 35.300393 201 70.208100 202 28.096191 203 87.136298 204 79.776499 205 36.243011 206 18.249808 207 49.666520 208 45.067095 209 81.785392 210 5.555862 211 105.361366 212 4.575460 213 381.204021 214 26.712747 216 8.037618 217 119.627795 218 10.061485 219 63.762947 220 9.087658 221 41.684105 222 35.907417 223 76.139589 224 23.752550 225 142.216169 226 67.755801 227 20.597788 228 76.818771 229 104.284923 230 18.541601 231 4.473983 232 3.580878 233 224.758597 234 26.863645 235 212.911324 236 50.921549 237 33.628254 238 42.168327 239 103.701129 240 136.060809 241 713.711764 242 34.027235 245 4.102289 246 27.086730 247 2.667541 248 2.497556 252 103.829221 253 7.460715 ... ``` - Сохраняем вектор оценок результативности в бинарном файле ```matlab >> save res.mat Res -mat ``` - Создаем гистограмму ```matlab >> hist(Res,20) >> xlabel('Results ') >> ylabel('Number of Unis ') ``` - Сохраняем гистограмму ```matlab saveas(gcf, 'Hist.jpg', 'jpg ') ``` - Рассчитали и отобразили оценку корелляции обобщенной результативности с финансированием ```matlab >> CorFin=corr(Res,XX(:,2)) CorFin = 0.8437 >> fprintf('Correlation of Results and Money = %f \\n',CorFin) Correlation of Results and Money = 0.843710 ``` ## 3 Создание файла программы (сценария). Проверка выполнения программы. Файл Hist.jpg - Создал файл программы Prog1.m: ![Скриншот программы](assets/figure2.png) - Проверил вывод сценария, выводится лишнее: ![Скриншот вывода](figure3.PNG) - Гистограмма: ![Скриншот гистограммы](Hist.jpg) ## 4 Изменения файла с командами: - Изменил сценарий (добавил ;), чтобы избавиться от эхо-вывода. Сценарий стал выполняться быстрее, и убрался лишний вывод ![Скриншот с выводом, сценарием](assets/figure4.PNG) ## 5 Создаем файл с выводом - изменил код: добавил fp=fopen('prtcl.txt ','w'); и в каждом выводе добавли fp и добавил закрытие файла fclose(fp); ![Скриншот с измененным кодом](assets/figure5.png) ![Скриншот с выводом в файл](assets/figure6.png) ## 6 Вывод в файл мин. , макс. , среднего, стандартного отклонения. ```matlab >>MinRes = min(Res); >>MaxRes = max(Res); >>MeanRes = mean(Res); >>stdRes = std(Res); >>fprintf(fp, 'Min %f \n ',MinRes ); >>fprintf(fp,'Max %f \n ',MaxRes ); >>fprintf(fp,'Mean = %f \n ', MeanRes); >>fprintf(fp,'Std = %f \n ', stdRes); ```