Setting up a problem in linprog
1 view (last 30 days)
Show older comments
Deepa Maheshvare
on 7 Jul 2022
Commented: Deepa Maheshvare
on 7 Jul 2022
This is a follow up to my previous question posted here
I want to define an absolute error loss function of the following form
% Loss Function (absolute error loss)
%% input curves
scale = 1.5;
x1 = [0,4,6,10,15,20]*scale;
y1 = [18,17.5,13,12,8,10];
x2 = [0,10.5,28]*scale;
y2= [18.2,10.6,10.3];
%% y2 is the target function and y1 is the function to be shifted
f = y1;
g = interp1(x2,y2,x1);
%% linprog inputs
% x = linprog(f,A,b)
% i = 1:length(x1)
A = [fi - 1; -fi -1];
x = [a ui];
b = [gi -gi];
% obj = sum_i u_i (function to minimize)
%% solve system
I am not sure how to set this up and solve this sytem in MATLAB's linprog
Could someone please help?
0 Comments
Accepted Answer
Torsten
on 7 Jul 2022
Edited: Torsten
on 7 Jul 2022
I think the whole procedure only makes sense if x1 is a subset of x2, but here we go:
scale = 1.5;
x1 = [0,4,6,10,15,20]*scale;
y1 = [18,17.5,13,12,8,10];
x2 = [0,10.5,28]*scale;
y2= [18.2,10.6,10.3];
%% y2 is the target function and y1 is the function to be shifted
f = y1;
g = interp1(x2,y2,x1);
ff = [0,ones(size(x1))];
A = [f.',-eye(numel(x1));-f.',-eye(numel(x1))];
b = [g.',-g.'];
sol = linprog(ff,A,b);
a = sol(1)
% Compare with least-squares solution
a2 = sum(f.*g)/sum(f.^2)
And the next step is
min: max_i ( abs( a*f_i - g_i ) )
? :-)
3 Comments
Torsten
on 7 Jul 2022
Is x just [a u1 u2 u3 u4 u5 u6] ?
Yes.
Then ff^T*x yields sum_i ui.
Yes.
min: max_i ( abs( a*f_i - g_i ) )
sorry, could not understand what you are pointing to.
Besides the two norms you used until now, you can try as a third approach to find "a" that minimizes the maximal deviation of a*f from g:
min: max_i ( abs (a*f_i - g_i) )
Was just a joke :-)
More Answers (0)
See Also
Categories
Find more on Introduction to Installation and Licensing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!