# Setting up a problem in linprog

조회 수: 2(최근 30일)
Deepa Maheshvare 2022년 7월 7일
댓글: Deepa Maheshvare 2022년 7월 7일
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

댓글을 달려면 로그인하십시오.

### 채택된 답변

Torsten 2022년 7월 7일
편집: Torsten 2022년 7월 7일
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);
Optimal solution found.
a = sol(1)
a = 1.0111
% Compare with least-squares solution
a2 = sum(f.*g)/sum(f.^2)
a2 = 0.9895
And the next step is
min: max_i ( abs( a*f_i - g_i ) )
? :-)
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Deepa Maheshvare 2022년 7월 7일
:-)

댓글을 달려면 로그인하십시오.

### 범주

Find more on Solver Outputs and Iterative Display in Help Center and File Exchange

R2021a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!