Форум для обсуждения курса

МТ-401 03.03.2021

МТ-401 03.03.2021

par Артем Маковецкий,
Nombre de réponses : 0

# x+5y-7=0 - наша прямая

p1 = [0,0];
p2 = [1,0];
p3 = [5,5];
p4 = [10,0];
y1=0;
y2=0;
y3=1;
y4=1;


function s = sigma(x)
s = (1/(1+exp(-x)));
endfunction

function s = scalprod(a, b)
s = 0;
for i=1:length(a)
s += a(i)*b(i);
endfor
endfunction

function s = gradient(delta, h1)
for i=1:3
s(i) = scalprod(delta, h1(i,:));
endfor
endfunction

function f = func_val (w,h1,y)
z2 = [];
z2 = w*h1;
h2 = [];
for i=1:length(z2)
h2(i) = sigma(z2(i));
endfor
f=0;
for j=1:4
f+=(h2(j)-y(j))*(h2(j)-y(j));
endfor
endfunction

function gr_step=grad_desc(n,w,h1,y)
w_temp=w;
w_next=w;
lambda=0.2;
for i=1:n
gr=func_val(w_temp,h1,y);
w_next=w_temp-lambda*gr;
w_temp=w_next;

endfor
gr_step=w_next;
endfunction

y = [y1,y2,y3,y4];

disp(y')

w11 = 1;
w12 = 1;
w13 = 1;

w = [w11, w12, w13];
h11 = [p1(1),p1(2),1];
h12 = [p2(1),p2(2),1];
h13 = [p3(1),p3(2),1];
h14 = [p4(1),p4(2),1];

h1 = [h11',h12',h13',h14']
s = sigma(0)

z2 = [];
z2 = w*h1;
h2 = [];
for i=1:length(z2)
h2(i) = sigma(z2(i));
endfor
z2
h2

#ptest = [1,0,1];
#z2test = w*ptest';
#h2test = [];
#for i=1:length(z2test)
# h2test(i) = sigma(z2test(i));
#endfor
#h2test
#z2test

delta = [];
for j=1:4
arg = scalprod(w, h1(:,j)) - y(j);
delta(j)=sigma(arg) * sigma(arg) * (1-sigma(arg));
endfor

gr=gradient(delta, h1)

f_val1=func_val(w,h1,y)

w01=w-1*gr;

f_val2=func_val(w01,h1,y)
w02=grad_desc(4,w,h1,y);
f_val3=func_val(w02,h1,y)