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
Walter Roberson
Walter Roberson on 11 Sep 2022
are A, B, C matrices? Are k1 and k2 scalar?
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);

Categories

Find more on Optimization Toolbox in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!