Minimizing an equation to 0

1 回表示 (過去 30 日間)
AAS
AAS 2022 年 9 月 11 日
編集済み: Bruno Luong 2022 年 9 月 11 日
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 件のコメント
Walter Roberson
Walter Roberson 2022 年 9 月 11 日
are A, B, C matrices? Are k1 and k2 scalar?
AAS
AAS 2022 年 9 月 11 日
yes, A,B and C are matrices and k1 and k2 are scalars.

サインインしてコメントする。

回答 (3 件)

Alan Stevens
Alan Stevens 2022 年 9 月 11 日
Try fminsearch
  1 件のコメント
AAS
AAS 2022 年 9 月 11 日
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);

サインインしてコメントする。


Torsten
Torsten 2022 年 9 月 11 日
編集済み: Torsten 2022 年 9 月 11 日
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 2022 年 9 月 11 日
編集済み: Bruno Luong 2022 年 9 月 11 日
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);

カテゴリ

Help Center および File ExchangeCorrelation and Convolution についてさらに検索

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by