Toto je starší verze dokumentu!
Soubor pal3_H.m (samostatne definova H(x,e)) — 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 [email protected] % 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 — Marek Sacha 2009/10/13 01:06
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Author: Marek Sacha <[email protected]> % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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)');
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):
— Marek Sacha 2009/10/13 00:48
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Author: Marek Sacha <[email protected]> % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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;