Fitting 8 equations simultaneously with three parameters

43 Ansichten (letzte 30 Tage)
Vahid Askarpour
Vahid Askarpour am 19 Sep. 2025 um 17:46
Kommentiert: Vahid Askarpour am 19 Sep. 2025 um 21:08
I have 8 equations each with three parameters (A, B, and C) to be fitted. For example,
Eq. 1: 2A+3B+5C-1=0
Eq. 2: -5A+2B-10C+12=0 and so on
I would like to fit the three parameters so that all the 8 equations almost hold simultaneously. Having looked at other posts, it seems that lsqnonlin may be the right choice. I am not looking for the actual solution but I would appreciate a yes or no to the use of lsqnonlin for this problem.
Thanks,
Vahid

Akzeptierte Antwort

Torsten
Torsten am 19 Sep. 2025 um 17:49
Bearbeitet: Torsten am 19 Sep. 2025 um 17:50
If all 8 equations are linear in the fitting parameters like in your example from above, "lsqlin" instead of "lsqnonlin" would be the code to use. If this is not the case, yes: use "lsqnonlin".
  2 Kommentare
Vahid Askarpour
Vahid Askarpour am 19 Sep. 2025 um 18:09
Thanks Torsten for the tip. They are all linear and I will be using lsqlin.
Torsten
Torsten am 19 Sep. 2025 um 19:40
Bearbeitet: Torsten am 19 Sep. 2025 um 20:03
If there are no constraints on the solution parameters, @Star Strider 's suggestion is also possible to use:
% Eq. 1: 2A+3B+5C-1=0
% Eq. 2: -5A+2B-10C+12=0
% Eq. 3: 9A-B+2C+5=0
% Eq. 4: 4A-7B+6C-13=0
ABC = lsqlin([2 3 5; -5 2 -10; 9 -1 2; 4 -7 6],[1; -12; -5; 13])
ABC = 3×1
-1.0118 -1.2492 1.4242
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
ABC = [2 3 5; -5 2 -10; 9 -1 2; 4 -7 6] \ [1; -12; -5; 13]
ABC = 3×1
-1.0118 -1.2492 1.4242
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Star Strider
Star Strider am 19 Sep. 2025 um 18:11
You might be able to use the mldivide, \ function --
Example --
% Eq. 1: 2A+3B+5C-1=0
% Eq. 2: -5A+2B-10C+12=0
% Eq. 3: 9A-B+2C+5=0 % <- ADDED
ABC = [2 3 5; -5 2 -10; 9 -1 2] \ [1; -12; -5]
ABC = 3×1
-1.0284 -1.3785 1.4385
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
fprintf('\nA = %9.5f\nB = %9.5f\nC = %9.5f\n',ABC)
A = -1.02839 B = -1.37855 C = 1.43849
.
  1 Kommentar
Vahid Askarpour
Vahid Askarpour am 19 Sep. 2025 um 21:08
Thank you Star Strider and Torsten for your comments. I used both your suggestions and I get exactly the same answer.
Cheers,
Vahid

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by