add octave 03 and 04

This commit is contained in:
Andrew 2019-11-22 22:51:59 +07:00
parent 8fecab6dcf
commit 389e4c7dbd
8 changed files with 125 additions and 0 deletions

View file

@ -0,0 +1,4 @@
# Ôóíêöèÿ ìîäåëèðóåò ïîäáðàñûâàíèå ìîíåòêè, ãäå îð¸ë = false
function [r] = coin_flip(N)
r = rand(1, N) > .5;
endfunction

View file

@ -0,0 +1,9 @@
# Ôóíêöèÿ ìîäåëèðóåò nexp ýêñïåðèìåíòîâ ïî ïîäáðàñûâàíèþ ìîíåòêè
# nflip ðàç
function [s] = flip_stats(nflip, nexp)
s = zeros(1, nflip+1);
for i = 1:nexp;
r = sum_heads(coin_flip(nflip));
s(r+1) = s(r+1) + 1;
endfor
endfunction

73
1sem/octave/03/main.m Normal file
View file

@ -0,0 +1,73 @@
# Часть 1
# Номер варианта
V = 33
# Инициализация ГПСЧ номером варианта
rand('state', V)
# Часть 2
# Вектор чисел 1..100
v1 = 1:100
v2 = randi([0, 1], [1, 100])
# Суммируем векторы v1 и v2
v3 = v1 + v2
v3 = v3 .* ~mod(v3, 2)
# Часть 3
# Создаём вектор из 99*V случайных значений на 0..3
r = rand([1, 99*V]) .* 3;
t = 0:0.01:3;
# Функция, находящая кол-во элементов r < t
f = @(x) length(r(r < x));
figure;
plot(t, arrayfun(f, t));
print("3.png")
# Часть 4
# Рисуем 4 ломаных линии в одной плоскости
figure;
plot(rand([V+12, 4]), rand([V+12, 4]));
print("4.png")
# Часть 5
# Рисуем 4 ломаных линии в одном пространстве
figure;
plot3(rand([V+12, 4]), rand([V+12, 4]), rand([V+12, 4]));
print("5.png")
# Часть 6
# Рисуем спираль с 3 + V витков
t = 0:pi/20:2*pi*(3+V);
r = t .^ 2;
x = r .* cos(t);
y = r .* sin(t);
figure;
plot(x, y);
print("6.png")
# Часть 7
# Построить в пространстве график функции z=cos(0.5Vx)x3+y2 в
# виде незакрашенной сетки и в виде закрашенной поверхности в
# области от -4 до 4 по каждой координате с шагом 0,1. В
# обоих случаях подписать оси координат.
X = -4:0.1:4;
Y = -4:0.1:4;
[x, y] = meshgrid(X, Y);
z = (cos(x .* (V*0.5)) .* x.^3) + y.^2;
figure;
mesh(z)
xlabel("x");
ylabel("y");
zlabel("z");
print("7_1.png")
figure;
surf(z)
xlabel("x");
ylabel("y");
zlabel("z");
print("7_2.png")
# Часть 11
nflip = 9*V
nexp = 1001+V
s = flip_stats(nflip, nexp)
result = s / nexp
figure;
bar(result)
print("11.png")

View file

@ -0,0 +1,4 @@
# Функция считает кол-во выпавших орлов в логическом векторе r
function [h] = sum_heads(r)
h = sum(r ~= 1);
endfunction

3
1sem/octave/03/wdq.m Normal file
View file

@ -0,0 +1,3 @@
function [s] = wdq(s)
s(:, max(s) < 0.5) = 0;
endfunction

View file

@ -0,0 +1,4 @@
function [h] = alph_entropy(P);
P = P(P ~= 0);
h = -sum(P.*log2(P));
endfunction;

View file

@ -0,0 +1,5 @@
function [r] = alph_redundancy(P);
ent = alph_entropy(P);
mx_ent = log2(length(P))
r = 1 - ent/mx_ent;
endfunction;

23
1sem/octave/04/main.m Normal file
View file

@ -0,0 +1,23 @@
# stage 1
V=33
rand("state", V)
#stage 4
c = rand(1, 10);
ralph = c./sum(c);
save -ascii "ralph.txt" ralph;
#stage 5
load -ascii "coin.txt" coin;
load -ascii "crime.txt" crime;
load -ascii "unfair.txt" unfair;
load -ascii "ventsel.txt" ventsel;
results = [
alph_entropy(coin), alph_redundancy(coin);
alph_entropy(crime), alph_redundancy(crime);
alph_entropy(unfair), alph_redundancy(unfair);
alph_entropy(ventsel), alph_redundancy(ventsel);
alph_entropy(ralph), alph_redundancy(ralph);
]
save -ascii "results.txt" results;