linear equation solver
[x0,kerA]=linsolve(A,b [,x0])
a na x ma real matrix (possibly sparse)
a na x 1 vector (same row dimension as A)
a real vector
a ma x k real matrix
linsolve computes all the solutions to A*x+b=0.
x0 is a particular solution (if any) and kerA=nullspace
of A. Any x=x0+kerA*w with arbitrary w satisfies
A*x+b=0.
If compatible x0 is given on entry, x0 is returned. If not
a compatible x0, if any, is returned.
A=rand(5,3)*rand(3,8); b=A*ones(8,1);[x,kerA]=linsolve(A,b);A*x+b //compatible b b=ones(5,1);[x,kerA]=linsolve(A,b);A*x+b //uncompatible b A=rand(5,5);[x,kerA]=linsolve(A,b), -inv(A)*b //x is unique // Benchmark with other linear sparse solver: [A,descr,ref,mtype] = ReadHBSparse(SCI+"/modules/umfpack/demos/bcsstk24.rsa"); b = zeros(size(A,1),1); tic(); res = umfpack(A,'\',b); mprintf('\ntime needed to solve the system with umfpack: %.3f\n',toc()); tic(); res = linsolve(A,b); mprintf('\ntime needed to solve the system with linsolve: %.3f\n',toc()); tic(); res = A\b; mprintf('\ntime needed to solve the system with the backslash operator: %.3f\n',toc()); | ![]() | ![]() |