# 2 equations, 2 unknowns - fminsearch(), fminunc() applied on numerical data

2 views (last 30 days)

Show older comments

Philipp Bisignano
on 22 Jun 2022

Commented: Bjorn Gustavsson
on 28 Jun 2022

I have 2 equations and , which should deliver the same result:

All of them are matrices with [m=800, n=1300]; A and B are certainly known, I tried to calculate Cx and Cy, but my problem is that the outcome is not the same - the equation is not satisfied!

I'm trying to treat Cx and Dy as unknowns and use fminsearch & fminunc by saying: to find the values for Cx and Cy which satisfy the equations. The calculation is done for every element of the matrices.

Cy_new = zeros(size(A));

Cx_new = zeros(size(A));

f2min_val = zeros(size(A));

for i=1:size(A,1)

for j=1:size(A,2)

f2min = @(C_xy) DRx(i,j) + C_xy(1) - ( DRy(i,j) + C_xy(2) );

[ C_xy, f2min_val(i,j) ] = fminunc( F2min, [-1, 0.5]); % Cx(i,j), Cy(i,j)

Cy_new(i,j) = C_xy(1); Cx_new(i,j) = C_xy(2);

end

end

The data for previously calculated Cx(i,j) and Cy(i,j) lies in a range of [-1, 0.5]

But I get the message for fminunc:

Problem appears unbounded.

fminunc stopped because the objective function value is less than

or equal to the value of the objective function limit.

<stopping criteria details>

fminunc stopped because the objective function value, -2.461927e+20, is less than

or equal to options.ObjectiveLimit = -1.000000e+20.

C_xy =

1.0e+20 *

-1.2310 1.2310

and for fminsearch

Exiting: Maximum number of function evaluations has been exceeded

- increase MaxFunEvals option.

Current function value: -111848999850590921804554051032055239655030784.000000

C_xy =

1.0e+44 *

-1.0233 0.0952

no matter what I use as starting values. Someone has an idea about what I might improve? Or is it just impossible with my data?

##### 0 Comments

### Accepted Answer

Bjorn Gustavsson
on 22 Jun 2022

From your description you have 800-by-1300 linear equations of the type:

a + x = b + y

and you want to solve for both x and y. Therein liest the problem. If you re-arrange the terms you will find:

x-y = b - a

and that is all you can achieve with this type of problem. You will have to accept that you can only determine the difference between x and y, and either settle for that or add more information to the problem. The results you get from the optimization-problems is due to the problem being underdetermined.

HTH

##### 9 Comments

Bjorn Gustavsson
on 28 Jun 2022

### More Answers (0)

### See Also

### Community Treasure Hunt

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

Start Hunting!