Solving linear systems in Matlab

3 visualizzazioni (ultimi 30 giorni)
L'O.G.
L'O.G. il 24 Ago 2023
Modificato: Bruno Luong il 24 Ago 2023
How do I solve for x in u = A(x+b)? A is a matrix, and the other terms are vectors. Isn't it something like x = A\u - b ? I'm not sure about subtracting the b term, however.
  1 Commento
Bruno Luong
Bruno Luong il 24 Ago 2023
Modificato: Bruno Luong il 24 Ago 2023
You need to be careful when the system is undedetermined (usually more unknown than equation)
In some sense x = A\u - b is the worse you can pick.

Accedi per commentare.

Risposta accettata

Torsten
Torsten il 24 Ago 2023
Modificato: Torsten il 24 Ago 2023
x = A\(u-A*b)
But it's the same as
x = A\u - b
  1 Commento
Bruno Luong
Bruno Luong il 24 Ago 2023
Modificato: Bruno Luong il 24 Ago 2023
Is it?
A=rand(3,4);
b=rand(4,1);
u=rand(3,1);
% 4 different solutions
x1=A\(u-A*b)
x1 = 4×1
-0.2210 0 -0.6049 -0.1026
x2=A\u-b
x2 = 4×1
-0.0231 -0.8875 -1.3122 1.0476
x3=lsqminnorm(A,u)-b
x3 = 4×1
-0.1409 -0.3592 -0.8912 0.3630
x4=lsqminnorm(A,u-A*b)
x4 = 4×1
-0.2409 0.0891 -0.5339 -0.2181
% All give the same "fitness"
A*x1-u
ans = 3×1
-0.9852 -1.3140 -1.3694
A*x2-u
ans = 3×1
-0.9852 -1.3140 -1.3694
A*x3-u
ans = 3×1
-0.9852 -1.3140 -1.3694
A*x4-u
ans = 3×1
-0.9852 -1.3140 -1.3694
norm(x1)
ans = 0.6522
norm(x2)
ans = 1.8993
norm(x3)
ans = 1.0368
norm(x4) % always the smallest
ans = 0.6314

Accedi per commentare.

Più risposte (1)

Steven Lord
Steven Lord il 24 Ago 2023
Define a new variable y such that y = x+b.
Using this new variable simplifies your system to u = A*y.
Solve this simplified system for y using the backslash operator, y = A\u.
Substituing into that solution using the definition of y, we know x+b = A\u.
Subtract b from both sides to get x = (A\u)-b.

Categorie

Scopri di più su Mathematics and Optimization in Help Center e File Exchange

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by