rref matrix with an unkown variable

4 vues (au cours des 30 derniers jours)
Nicola
Nicola le 10 Sep 2025
Commenté : Paul le 11 Sep 2025
Given the matrix:
M = [1, 2, 3, 5;
2, 3, 4, 8;
3, 4, 5, c;
1, 1, 0, 2];
How does one code this in matlab so that it outputs the proper rref() matrix
I am expecting to get (did this by hand):
rref(M) = [1, 0, 0, 2;
0, 1, 0, 0;
0, 0, 0, c-11;
0, 0, 1, 1];
When solving for rref(M) using my code it always gives me this:
[1, 0, 0, 0]
[0, 1, 0, 0]
[0, 0, 1, 0]
[0, 0, 0, 1]

Réponse acceptée

Matt J
Matt J le 10 Sep 2025
Modifié(e) : Matt J le 10 Sep 2025
I am expecting to get (did this by hand):
Your expected result doesn't look right. For both row-echelon and reduced row-echelon form, the result must be triangular. If you just want (non-reduced) row-echelon form, you could use LU, e.g.,
syms c
M = [1, 2, 3, 5;
2, 3, 4, 8;
3, 4, 5, c;
1, 1, 0, 2];
[L,ref]=lu(M);
ref
ref = 
  6 commentaires
Paul
Paul le 11 Sep 2025
Modifié(e) : Paul le 11 Sep 2025
I'm going to guess that rref does not (and possibly cannot) account for all possible values of the symbolic variables. Somewhere along the way it's generating an expression that cancels out the c, even though such cancellation isn't correct for all possible values of c. For example
syms a b c
M = [a b;0 b]
M = 
If I was doing this problem by hand, I might proceed as follows with row operations
R = M;
R(2,:) = R(2,:)/b % 1
R = 
R(1,:) = R(1,:)/a % 2
R = 
R(1,:) = R(1,:) - R(2,:)*b/a % 3
R = 
That happens to be the same result as returned from rref, though I suspect rref got there a different way
rref(M)
ans = 
Of course step 1 is invalid if b = 0, but the SMT is happy to do it. We see the same effect with the example from the rref
A = [a b c; b c a; a + b, b + c, c + a]
A = 
rref(A)
ans = 
That result can't be correct for any combination of (a,b,c) s.t. a*c - b^2 = 0
rref(subs(A,[a,b,c],[1,1,1])) % Case A
ans = 
rref(subs(A,[a,b,c],[2,4,8])) % Case B
ans = 
Interestingly, assumptions do influence rref
assume(a*c == b^2)
rref(A)
ans = 
simplify(ans)
ans = 
But I don't see how that result can recover Case A
Paul
Paul le 11 Sep 2025

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by