\( \DeclareMathOperator{\abs}{abs} \newcommand{\ensuremath}[1]{\mbox{$#1$}} \)
(%i4) |
x
:[
1,
-
1,
3,
-
2]
$
y :[ 5 . 5, 15 . 5, 11 . 2, 26 . 4] $ A : transpose( matrix( x ^ 2, x ^ 1, x ^ 0)) $ print( A, matrix([ a],[ b],[ c]), "=", transpose( y)) $ |
Veamos si tiene solución:
(%i5) | if rank( addcol( A, transpose( y)))> rank( A) then print( "Sistema Incompatible") $ |
Si rank(A) es igual al número de incógnitas tendremos una aproximación por mínimos cuadrados:
(%i6) | if rank( A) = matrix_size( A)[ 2] then print( "Existe solución por mínimos cuadrados") $ |
Esta solución vendrá dada por \(\bar{x}=(A^t.A)^{-1}.A^t.y\)
(%i8) |
xm
:
invert(
transpose(
A).
A).
transpose(
A).
transpose(
y)
$
xm : truncate( xm * 100) / 100, numer $ /* truncamos a dos decimales */ |
La parábola que buscamos es:
(%i9) | xm. matrix([ z ^ 2],[ z],[ 1]) ; /* utilizamos la variable z para no confundir */ |
Ahora la dibujamos con los puntos para ver la aproximación:
(%i10) | wxplot2d([ %,[ discrete, makelist([ x[ i], y[ i]], i, 1, 4)]],[ z, - 2 . 5, 3 . 5],[ style, lines, points]) ; |
Created with wxMaxima.
Una parábola es de la forma \(y=ax^2+bx+c\), luego nos plantea un sistema de la forma: