| Karim Belabas on Mon, 09 Jun 2025 02:07:24 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: question on method of least squares for sideways parabolas |
Hi Randall,
I'm not sure what you're trying to achieve.
1) Here's a general (linear) least square regression, where you expect
y ~ sum_i a[i] * F[i](x)
for some known functions F[i] and want the best a[i] wrt least square error.
least_squares(X, Y, F) =
{ my(M = matrix(#X,#F, i,j, F[j](X[i]))); matsolve(M~ * M, M~ * Y); }
Toy example with some random functions and evaluation points:
F = [x->sqrt(x+3), x->log(x+2), x->exp(x)+1];
A = [1.2, 2.3, -3.5];
f(x) = A * vectorv(#F, j, F[j](x)); \\ my "unknown" linear combination
X = vectorv(10, i, random(1.));
Y = apply(f, X);
least_squares(X, Y, F) \\ requested coefficients
%1 = [1.1999999999999999999999999999999999660, 2.3000000000000000000000000000000001834, -3.5000000000000000000000000000000000383]~
Your implementation is basically least_squares(X, Y, [x->1, x->x, x->x^2])
2) once you have found the (a,b,c) coefficients, I guess you want to predict
some y given x ~ ay^2 + by + c ? I don't see what else you can do than
solving for y (e.g. using the Formula given by Maxima, which is
essentially what polroots is doing).
Cheers,
K.B.
--
Pr. Karim Belabas, U. Bordeaux, Vice-président en charge du Numérique
Institut de Mathématiques de Bordeaux UMR 5251 - (+33) 05 40 00 29 77
http://www.math.u-bordeaux.fr/~kbelabas/
* American Citizen [2025-06-09 00:00]:
> Hello:
>
> There are many websites showing how to use the method of least squares for
> solving for a parabola and this is standard fare in many college textbooks,
> but my problem is a bit different and a casual search on the internet turned
> up nothing (for me)
>
> The standard method has
>
> M = [ n, sum(xi), sum(xi^2) ; sum(xi), sum(xi^2), sum(xi^3); sum(xi^2),
> sum(xi^3), sum(xi^4)]
>
> B = [ sum(yi), sum(yi xi), sum(yi xi^2) ]~
>
> X = matsolve(M,B)
>
> which solves y = ax^2 + bx + c for the vertical parabola
>
> My parabola is the sideways positive x-axis parabola: x = ay^2 + by + c
> (limited to 1st and 4th quadrants)
>
> Currently I am solving for a,b,c as i M above, but transposing the xi and yi
> values in both M and B and then solving for Y (not X)
>
> Then having found a,b,c I take real(polroots(ay^2+by+c - x)[2]) where x is
> my value to find the corresponding y value for (not using y to find x, but
> going backwards x-> y)
>
> Maxima shows that solving x = ay^2 + by + c and solving for y as
>
> y = +/- (sqrt(4ax-4ac+b^2)-b)/(2a) but I don't know how to do least squares
> on a rational surd expression such as this to obtain a,b,c
>
> Is my method basically the best way to do this?
>
> Randall