Minimizing an equation to 0

1 Ansicht (letzte 30 Tage)
AAS
AAS am 11 Sep. 2022
Bearbeitet: Bruno Luong am 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 Kommentare
Walter Roberson
Walter Roberson am 11 Sep. 2022
are A, B, C matrices? Are k1 and k2 scalar?
AAS
AAS am 11 Sep. 2022
yes, A,B and C are matrices and k1 and k2 are scalars.

Melden Sie sich an, um zu kommentieren.

Antworten (3)

Alan Stevens
Alan Stevens am 11 Sep. 2022
Try fminsearch
  1 Kommentar
AAS
AAS am 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);

Melden Sie sich an, um zu kommentieren.


Torsten
Torsten am 11 Sep. 2022
Bearbeitet: Torsten am 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 am 11 Sep. 2022
Bearbeitet: Bruno Luong am 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);

Kategorien

Mehr zu Optimization Toolbox finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by