Files
it-labs/ТЕМА2/report.md
2026-02-18 17:03:07 +03:00

459 строки
16 KiB
Markdown

# Отчёт по Теме 2
Латышев Герман, А-03-24
## 1 Настройка каталога
# Установили путь к папке **ТЕМА2**
## 2 Изучение и работа с файлом dan_vuz.txt
# Изучили файл
# Прочитали данные из файла:
```matlab
>> XX=load('dan_vuz.txt')
XX =
Columns 1 through 10:
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 0
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 0
1.9900e+02 2.4167e+05 1.0000e+00 0 1.0000e+00 5.0000e+00 5.0000e+00 2.0000e+00 0 0
2.0000e+02 6.1990e+05 3.0000e+00 1.0000e+00 1.0000e+00 2.8000e+01 0 2.4000e+01 0 0
...
```
# Проверили размерность матрицы XX:
```matlab
>> size(XX)
ans =
290 15
```
# Выяснил, что в файле находятся данные о 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
13 16 8 64 20 38 10 0 0 20 8
8 0 0 19 0 15 0 0 12 5 12
8 7 7 63 42 121 23 1 12 11 3
6 1 4 33 23 55 4 0 0 8 1
4 2 0 19 0 11 1 0 3 4 10
7 6 0 64 11 45 7 0 0 4 9
4 2 0 72 6 73 41 0 5 6 6
1 1 0 11 1 14 8 0 5 4 2
0 0 0 7 0 0 0 0 2 1 4
0 0 0 1 0 4 0 0 1 0 0
5 3 2 138 19 181 3 0 22 12 1
6 1 0 21 11 14 3 0 4 5 2
16 7 1 147 24 154 14 0 4 12 3
1 9 7 52 0 23 0 0 0 19 2
1 2 5 14 2 31 10 0 0 5 3
0 0 6 31 11 26 6 0 1 3 11
4 8 0 49 13 91 19 0 12 11 7
2 1 0 40 6 148 2 0 6 8 2
...
```
# Составили матрицу корреляций между показателями результативности:
```matlab
>> R=corr(X)
R =
Columns 1 through 10:
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.8811e-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 8.2170e-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 7.8358e-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 8.5183e-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 7.7266e-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 8.3810e-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.2936e-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 5.6462e-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 6.2616e-01
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 1.0000e+00
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 3.8799e-01
Column 11:
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
3.8799e-01
1.0000e+00
```
# Используя метод главных компонент, получим собственные значения и собственные векторы от квадратичной формы:
```matlab
>> [vect,lambda]=eig(X'*X)
vect =
Columns 1 through 10:
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 4.4068e-02
-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 6.2111e-03
-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 -4.1502e-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 7.2027e-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 -3.7246e-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 -5.1787e-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 2.5496e-01
-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 5.5851e-04
-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 2.0459e-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 5.3342e-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 4.8313e-02
Column 11:
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
lambda =
Diagonal Matrix
Columns 1 through 10:
2.2947e+01 0 0 0 0 0 0 0 0 0
0 1.9317e+03 0 0 0 0 0 0 0 0
0 0 2.5940e+03 0 0 0 0 0 0 0
0 0 0 3.4573e+03 0 0 0 0 0 0
0 0 0 0 5.6252e+03 0 0 0 0 0
0 0 0 0 0 8.6721e+03 0 0 0 0
0 0 0 0 0 0 1.8915e+04 0 0 0
0 0 0 0 0 0 0 4.7523e+04 0 0
0 0 0 0 0 0 0 0 5.7484e+04 0
0 0 0 0 0 0 0 0 0 2.2565e+05
0 0 0 0 0 0 0 0 0 0
Column 11:
0
0
0
0
0
0
0
0
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.7737e+00
3.1540e+01
1.4739e+02
1.8314e+01
3.2846e+01
1.4511e+01
1.9235e+01
0
>> 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
...
1037 1.846687
1038 17.646937
1039 153.910670
1041 119.835954
1044 5.010210
1 2.691959
2 379.300890
3 13.497203
4 2.462250
6 19.718182
7 200.667783
8 93.618235
9 25.650544
10 26.344823
11 65.285854
12 21.514761
...
187 5.773718
188 31.539990
189 147.387148
190 18.314164
191 32.846011
192 14.511067
193 19.235467
194 0.000000
```
# Сохранили вектор оценок результативности в бинарном файле:
```matlab
>> save res.mat Res -mat
```
# Представили распределение оценок результативности в виде гистограммы:
```matlab
>> hist(Res,20)
>> xlabel('Results ')
>> ylabel('Number of Unis ')
```
# Сохранили гистограмму в формате **.jpg**
```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 Создание файла (сценария) программы и её проверка
# Создали файл программы с названием **Prog1.m**:
![Скриншот файла Prog1.m](assets/figure3.png)
# Изучили результаты выполнения программы и вывод сценария:
![Скриншот результатов выполнения Prog1.m](assets/figure3-2.png)
# На выходе имеем эхо-вывод:
![Скриншот эхо-вывода](assets/figure3-3.png)
#Гистограмма:
![Скриншот гистограммы](Hist.jpg)
## 4 Оптимизация программы
# Изменили сценарий, путем добавления символа ";" в каждую строку программы. Эхо-вывод прекратился, также программа начала быстрее работать:
![Скриншот измененного сценария](assets/figure4.png)
## 5 Создание файла с выводом
# Добавили в программу "fp=fopen('prtcl.txt ','w')" и "fclose(fp)", также добавили в каждой команде вывода файловую переменную "fp":
![Скриншот сценария для записи файла](assets/figure5-1.png)
```matlab
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
Delta= 95
Results
197 92.541636
198 73.432513
199 5.885468
200 35.300393
201 70.208100
202 28.096191
203 87.136298
...
465 37.339465
466 142.928780
467 9.122607
472 53.463843
476 93.289532
477 57.155319
484 19.139209
1001 5.491474
1002 85.213352
1004 170.642969
...
1041 119.835954
1044 5.010210
1 2.691959
2 379.300890
3 13.497203
4 2.462250
6 19.718182
7 200.667783
...
189 147.387148
190 18.314164
191 32.846011
192 14.511067
193 19.235467
194 0.000000
Correlation of Results and Money = 0.843710
```
## 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);
```