===== Cvičení 4 =====
==== Uloha 1 ====
Soubor pal3_H.m (samostatne definova H(x,e))
--- //[[sachamar@fel.cvut.cz|Marek Sacha]] 2009/10/13 01:06//
function [ h ] = pal3_H( x , e )
% [ h ] = pal3_H( x , e )
%
% Computes value of function H(x,e)
% x is a column vector
% e is a constant
%
% Author: Marek Sacha sachamar@fel.cvut.cz
% Date: 12.10.2009
[ xw xh ] = size(x);
temp_e = e*-1*ones(xw,xh);
temp = [ zeros(xw,xh) (x+temp_e) ((-1*x)+temp_e) ];
% do not forget to count max in second dimension
h = max(temp,[],2);
Uloha 1
--- //[[sachamar@fel.cvut.cz|Marek Sacha]] 2009/10/13 01:06//
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author: Marek Sacha %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all
% initialize e
e = 0.3;
% initialize x
x = -1 : 0.01 : 1;
% function works vith column vector only
x = x';
y = pal3_H(x,e);
plot(x,y,'r');
xlabel('x ')
ylabel('H(x,e)');
==== Uloha 2 ====
Vykresli i graf s ruznymivysledky aproximacnich primkek pro ruzne tolerance chyby e (0.001, 0.01, 0.1 0.5 )
Odvozeni prevodu ulohy na LP viz scan (trik lambda = lambda1 + lambda2 + .... + lambda n):
{{:courses:a4b33opt:opt_cv3_odvozeni_uloha_2_opravene.jpg|}}
--- //[[sachamar@fel.cvut.cz|Marek Sacha]] 2009/10/13 00:48//
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author: Marek Sacha %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
clc
load data1.mat
% initialize e, test various cases
E = [ 0.001 0.01 0.1 0.5 ];
% Colours for different cases
C = [ 'r' 'g' 'b' 'c' ];
hold on;
for j=1:4
% Initialize e
e=E(j);
[ xh xw ] = size(x);
% Construct inequalities matrix
% a b l1 l2 ... ln
% ++++++++++++++++++++++++
% | x1 1 -1 0 ... 0 |
% | x2 1 0 -1 ... 0 |
% ...
% | xn 1 0 0 ... -1 |
% A = |-x1 -1 -1 0 ... 0 |
% |-x2 -1 0 -1 ... 0 |
% ...
% |-xn -1 0 0 ... -1 |
% | 0 0 -1 0 ... 0 |
% | 0 0 0 -1 ... 0 |
% ...
% | 0 0 0 0 ... -1 |
% ++++++++++++++++++++++++
%
A = [ x ones(xh,1) -1*eye(xh); -1*x -1*ones(xh,1) -1*eye(xh); zeros(xh,1) zeros(xh,1) -1*eye(xh) ];
% Construct right side
% | e + y |
% b = | e - y |
% | 0 |
b = [ (e*ones(xh,1))+y; (e*ones(xh,1))-y; zeros(xh,1) ];
% Construct function to be minimized
% f = 0a + 0b + lambda1 + lambda2 + lambda3 + ... + lambdan
f = [ 0 ; 0; ones(xh,1)];
% Run linprog
o = linprog(f,A,b);
% o = [ a b lambda1 lambda2 ... lambdan ];
% Print separate points
plot(x,y,'y.');
% Approximation line
plot(x,x*o(1)+o(2),C(j));
end
hold off;
~~DISCUSSION~~