diff --git a/1sem/octave/03/coin_flip.m b/1sem/octave/03/coin_flip.m new file mode 100644 index 0000000..a797ce0 --- /dev/null +++ b/1sem/octave/03/coin_flip.m @@ -0,0 +1,4 @@ +# Функция моделирует подбрасывание монетки, где орёл = false +function [r] = coin_flip(N) + r = rand(1, N) > .5; +endfunction diff --git a/1sem/octave/03/flip_stats.m b/1sem/octave/03/flip_stats.m new file mode 100644 index 0000000..b088f35 --- /dev/null +++ b/1sem/octave/03/flip_stats.m @@ -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 diff --git a/1sem/octave/03/main.m b/1sem/octave/03/main.m new file mode 100644 index 0000000..351bb02 --- /dev/null +++ b/1sem/octave/03/main.m @@ -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") \ No newline at end of file diff --git a/1sem/octave/03/sum_heads.m b/1sem/octave/03/sum_heads.m new file mode 100644 index 0000000..c0fa689 --- /dev/null +++ b/1sem/octave/03/sum_heads.m @@ -0,0 +1,4 @@ +# Функция считает кол-во выпавших орлов в логическом векторе r +function [h] = sum_heads(r) + h = sum(r ~= 1); +endfunction diff --git a/1sem/octave/03/wdq.m b/1sem/octave/03/wdq.m new file mode 100644 index 0000000..2066028 --- /dev/null +++ b/1sem/octave/03/wdq.m @@ -0,0 +1,3 @@ +function [s] = wdq(s) + s(:, max(s) < 0.5) = 0; +endfunction diff --git a/1sem/octave/04/alph_entropy.m b/1sem/octave/04/alph_entropy.m new file mode 100644 index 0000000..be9de2a --- /dev/null +++ b/1sem/octave/04/alph_entropy.m @@ -0,0 +1,4 @@ +function [h] = alph_entropy(P); + P = P(P ~= 0); + h = -sum(P.*log2(P)); +endfunction; diff --git a/1sem/octave/04/alph_redundancy.m b/1sem/octave/04/alph_redundancy.m new file mode 100644 index 0000000..2a762d6 --- /dev/null +++ b/1sem/octave/04/alph_redundancy.m @@ -0,0 +1,5 @@ +function [r] = alph_redundancy(P); + ent = alph_entropy(P); + mx_ent = log2(length(P)) + r = 1 - ent/mx_ent; +endfunction; diff --git a/1sem/octave/04/main.m b/1sem/octave/04/main.m new file mode 100644 index 0000000..34b5079 --- /dev/null +++ b/1sem/octave/04/main.m @@ -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; \ No newline at end of file