مجموع کمترین مربعات
مدل خطی > دیدگاه جبری

همان‌طور که در سال ۱۹۸۰ توسط Golub و Van Loan نشان داده شد، مسئله TLS به‌طور کلی راه حلی ندارد.[۴] موارد زیر مورد ساده‌ای را در نظر می‌گیرند که در آن یک راه‌حل منحصربه‌فرد بدون ایجاد فرضیات خاصی وجود دارد.
محاسبه TLS با استفاده از تجزیه مقدار منفرد (SVD) در متون استاندارد توضیح داده شده‌است.[۵] می‌توانیم معادله را حل کنیم.
XB\approx Y
برای B که در آن X m-by-n و Y m-by-k است.
یعنی ما به دنبال یافتن B هستیم که ماتریس‌های خطا E و F را به ترتیب برای X و Y به حداقل می‌رساند. به این معنا که،
{\displaystyle \mathrm {argmin} _{B,E,F}\|[E\;F]\|_{F},\qquad (X+E)B=Y+F}
که ماتریس تقویت شده با E و F در کنار هم است و  \|\cdot \|_{F}  نُرم Frobenius است، که جذر مجموع مجذورات همه ورودی‌های یک ماتریس و به همین ترتیب ریشه دوم مجموع مربع‌های طول سطرها یا ستون‌های ماتریس است.
این را می‌توان به صورت زیر بازنویسی کرد:
{\displaystyle [(X+E)\;(Y+F)]{\begin{bmatrix}B\\-I_{k}\end{bmatrix}}=0.}
که Ik ماتریس همانی K*K است.
سپس هدف این است که  [E\;F] را پیدا کنیم که مرتبه  [X\;Y] را تا k کاهش دهیم.
تعریف می‌کنیم که تجزیه مقدار تکین ماتریس تقویت شده  [X\;Y] باشد.
[X\;Y]=[U_{X}\;U_{Y}]{\begin{bmatrix}\Sigma _{X}&0\\0&\Sigma _{Y}\end{bmatrix}}{\begin{bmatrix}V_{XX}&V_{XY}\\V_{YX}&V_{YY}\end{bmatrix}}^{*}=[U_{X}\;U_{Y}]{\begin{bmatrix}\Sigma _{X}&0\\0&\Sigma _{Y}\end{bmatrix}}{\begin{bmatrix}V_{XX}^{*}&V_{YX}^{*}\\V_{XY}^{*}&V_{YY}^{*}\end{bmatrix}}
که در آن V به بلوک‌های مربوط به شکل X و Y تقسیم می‌شود.
با استفاده از قضیه اکارت-یانگ، تقریبی که نُرم خطا را به حداقل می‌رساند، به گونه‌ای است که ماتریس‌های U و V بدون تغییر باقی می‌مانند، در حالی که کوچک‌ترین مقادیر مفرد k با صفر جایگزین می‌شوند؛ یعنی:
[(X+E)\;(Y+F)]=[U_{X}\;U_{Y}]{\begin{bmatrix}\Sigma _{X}&0\\0&0_{k\times k}\end{bmatrix}}{\begin{bmatrix}V_{XX}&V_{XY}\\V_{YX}&V_{YY}\end{bmatrix}}^{*}
سپس با خطی فرض کردن:
{\displaystyle [E\;F]=-[U_{X}\;U_{Y}]{\begin{bmatrix}0_{n\times n}&0\\0&\Sigma _{Y}\end{bmatrix}}{\begin{bmatrix}V_{XX}&V_{XY}\\V_{YX}&V_{YY}\end{bmatrix}}^{*}.}
سپس می‌توانیم بلوک‌ها را از ماتریس‌های U و Σ حذف کنیم و آن را ساده کنیم:
{\displaystyle [E\;F]=-U_{Y}\Sigma _{Y}{\begin{bmatrix}V_{XY}\\V_{YY}\end{bmatrix}}^{*}=-[X\;Y]{\begin{bmatrix}V_{XY}\\V_{YY}\end{bmatrix}}{\begin{bmatrix}V_{XY}\\V_{YY}\end{bmatrix}}^{*}.}
این E و F را فراهم می‌کند تا:
{\displaystyle [(X+E)\;(Y+F)]{\begin{bmatrix}V_{XY}\\V_{YY}\end{bmatrix}}=0.}
حال اگر  V_{YY} غیر مفرد باشد، که همیشه اینطور نیست (توجه داشته باشید که رفتار TLS زمانی که  V_{YY} مفرد است، هنوز به خوبی درک نشده‌است)، پس می‌توانیم هر دو طرف را در  -V_{YY}^{-1} ضرب کنید تا بلوک پایینی ماتریس سمت راست را به صورت ماتریس همانی منفی بدست آورید.
[(X+E)\;(Y+F)]{\begin{bmatrix}-V_{XY}V_{YY}^{-1}\\-V_{YY}V_{YY}^{-1}\end{bmatrix}}=[(X+E)\;(Y+F)]{\begin{bmatrix}B\\-I_{k}\end{bmatrix}}=0,
و همچنین:
B=-V_{XY}V_{YY}^{-1}.
در زیر پیاده‌سازی ساده GNU Octave آمده‌است:
function B = tls(X, Y)

[m n]   = size(X);             % n is the width of X (X is m by n)
Z       = [X Y];               % Z is X augmented with Y.
[U S V] = svd(Z, 0);           % find the SVD of Z.
VXY     = V(1:n, 1+n:end);     % Take the block of V consisting of the first n rows and the n+1 to last column
VYY     = V(1+n:end, 1+n:end); % Take the bottom-right block of V.
B       = -VXY / VYY;

end
روشی که در بالا برای حل مسئله توضیح داده شد، که مستلزم آن است که ماتریس  V_{YY} غیرمفرد باشد، می‌تواند توسط به اصطلاح الگوریتم TLS کلاسیک کمی بسط یابد.