// define matrix A for system // x+y=5 // 2x+y=4 A=[1 1 5; 2 1 4] // row 1 A(1,:) // row 2 A(2,:) // col 1 A(:,1) // entry 1,3 = entry in row 1, col 3 A(1,3) // row reduce A A(2,:)=A(2,:)-2*A(1,:) A(2,:)=-1*A(2,:) // this corresponds to the equivalent system // x+y=5 // y=6 // solve using back substitution y=6 x=5-y // // define matrix B for system // x+y+z=0 // x+2y-z=5 // -2x+6y+4z=2 B=[1 1 1 0; 1 2 -1 5; -2 6 4 2] // row reduce B B(2,:)=B(2,:)-B(1,:) B(3,:)=B(3,:)+2*B(1,:) B(3,:)=B(3,:)-8*B(2,:) B(3,:)=1/22*B(3,:) // solve using back sub z=B(3,4) y=B(2,4)+2*z x=B(1,4)-y-z // check that it solves original system x+y+z x+2*y-z -2*x+6*y+4*z // // system with no solutions // 2x+3y=10 // -2x-3y=5 C=[2 3 10; -2 -3 5] // row reduce C C(2,:)=C(1,:)+C(2,:) // equivalent system is // 2x+3y=10 // 0x+0y=15 // the last equation says 0=15, so there are no solutions // // system with infinitely many solutions // x+y-z=10 // -2x+3y+3z=11 // -3x+7y+3z=32 // define matrix D for system D=[1 1 -1 10; -2 3 3 11; -3 7 5 32] // row reduce D(2,:)=D(2,:)+2*D(1,:) D(3,:)=D(3,:)+3*D(1,:) D(3,:)=D(3,:)-2*D(2,:) D(2,:)=D(2,:)/5 // new system is // x+y-z=10 // y+.2z=6.2 // 0=0 // solve using back sub // z is free // introduce a parameter t, and let z=t // x, y, z then become functions of t function [x, y ,z]=solution(t) z=t y=6.2-.2*z x=10-y+z endfunction // different values of t will give different solutions [x y z]=solution(1) [x y z]=solution(-2) // as a column vector (; at end of line suppresses output of a command) [x y z]=solution(4.1); [x;y;z] // // more complicated example // 6 unknowns x1 x2 x3 x4 x5 x6, 4 equations // represented by a 6 by 4 matrix E= [ 1 1 1 0 -1 2 3; 5 5 -10 2.5 1 -4 3.1; 2 3 4 5 6 7 8; 0 -2.1 3.7 6 2 4 5 ] // zero out first column in rows 2,3,4 E(2,:)=E(2,:)-5*E(1,:) E(3,:)=E(3,:)-2*E(1,:) // switch rows 2 and 3 E([2 3],:)=E([3 2],:) // zero out second column in rows 3, 4 E(4,:)=E(4,:)+2.1*E(2,:) // zero out third column in row 4 E(4,:)=E(4,:)*15+7.9*E(3,:) // normalize leading entries to 1 E(3,:)=E(3,:)/E(3,3) E(4,:)=E(4,:)/E(4,4) // back sub to find solution // x5 x6 are free variables, call them s and t function [x1, x2, x3, x4, x5, x6]=solution(s,t) x5=s x6=t x4=E(4,7)-t*E(4,6)-s*E(4,5) x3=E(3,7)-t*E(3,6)-s*E(3,5)-x4*E(3,4) x2=E(2,7)-t*E(2,6)-s*E(2,5)-x4*E(2,4)-x3*E(2,3) x1=E(1,7)-t*E(1,6)-s*E(1,5)-x4*E(1,4)-x3*E(1,3)-x2*E(1,2) endfunction // some sample solutions [x1,x2,x3,x4,x5,x6]=solution(1,0); [x1;x2;x3;x4;x5;x6] [x1,x2,x3,x4,x5,x6]=solution(-5,11); [x1;x2;x3;x4;x5;x6] [x1,x2,x3,x4,x5,x6]=solution(3.14,-2.5); [x1;x2;x3;x4;x5;x6]