Minimizing an equation to 0

2 views (last 30 days)
AAS
AAS on 11 Sep 2022
Edited: Bruno Luong on 11 Sep 2022
I have an equation where I am trying to reduce the RMS to 0 i.e RMS(A-(B+C)<=0. A,B and C are known but the RMS is not equal to 0 . Now, I want to modify this equation such that RMS(A-(k1*B+k2*C)<=0. I want to find k1 and k2 to make the RMS as close to 0. How could I do this?
  2 Comments
AAS
AAS on 11 Sep 2022
yes, A,B and C are matrices and k1 and k2 are scalars.

Sign in to comment.

Answers (3)

Alan Stevens
Alan Stevens on 11 Sep 2022
Try fminsearch
  1 Comment
AAS
AAS on 11 Sep 2022
I tried to implement it this way.. however, it did not produce good resuts, barely did any minimization. Am I implementing it right?
f = @(k) rms(C-(k(1)*A+k(2)*B));;
k0=[1 1];
[xmin] = fminsearch(f,k0,options);
f(xmin);

Sign in to comment.


Torsten
Torsten on 11 Sep 2022
Edited: Torsten on 11 Sep 2022
A = [4 3; 6 2; 7 -3];
B = [1 -3; 2 2; 5 -pi];
C = [12 -0.5; 7 -3; 0 1];
fun = @(p)reshape(A-(p(1)*B+p(2)*C),[],1);
sol = lsqnonlin(fun,[1 1])
Local minimum found. Optimization completed because the size of the gradient is less than the value of the optimality tolerance.
sol = 1×2
0.9421 0.3061
error = rms(fun(sol))
error = 2.7826

Bruno Luong
Bruno Luong on 11 Sep 2022
Edited: Bruno Luong on 11 Sep 2022
This minimize the frobenius norm, or l2 norm of the vectorized residual matrix (divided by sqrt(numel(A)) you'll get the rms)
k=[B(:),C(:)]\A(:);
k1=k(1);
k2=k(2);

Community Treasure Hunt

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

Start Hunting!