Skip to content

Polynomials.fit changes behavior somewhere between (inclusive) Julia 1.7.3 and Julia 1.10.4, the latter being self-inconsistent (problematic) #579

Open
@pchavez201706

Description

@pchavez201706

This is my first issue report, so please forgive me if I "didn't get the memo" about this finding at some earlier date, but it's quite simple and shouldn't waste much time in the worst-case:

In Julia 1.7.3, Polynomials.fit with the third input argument ("deg"), i.e., the degree of the polynomial desired, of value x always returns a Polynomial of x+1 number of coefficients.

In Julia 1.10.4, Polynomials.fit with the third input argument ("deg") of value x ALMOST always returns a Polynomial of x+1 number of coefficients.

MWE (note the difference in one of the returns between the two code blocks with the same two Polynomial.fit commands run in the two Julia versions):

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.7.3 (2022-05-06)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> using Polynomials

julia> x=-2:1
-2:1

julia> y=[0.0360126786947437, 0.020007043719302054, 0.0360126786947437, 0.020007043719302054]
4-element Vector{Float64}:
 0.0360126786947437
 0.020007043719302054
 0.0360126786947437
 0.020007043719302054

julia> Polynomials.fit(x,y,2).coeffs
3-element Vector{Float64}:
  0.026409297709478707
 -0.0032011269950883254
  6.640921040373548e-19

julia> y=[0.00361, 0.00201, 0.00361, 0.00201]
4-element Vector{Float64}:
 0.00361
 0.00201
 0.00361
 0.00201

julia> Polynomials.fit(x,y,2).coeffs
3-element Vector{Float64}:
  0.00265
 -0.00031999999999999976
 -2.926366747177586e-19

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.10.4 (2024-06-04)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

julia> using Polynomials

julia> x=-2:1
-2:1

julia> y=[0.0360126786947437, 0.020007043719302054, 0.0360126786947437, 0.020007043719302054]
4-element Vector{Float64}:
 0.0360126786947437
 0.020007043719302054
 0.0360126786947437
 0.020007043719302054

julia> Polynomials.fit(x,y,2).coeffs
2-element Vector{Float64}:
  0.026409297709478707
 -0.0032011269950883254

julia> y=[0.00361, 0.00201, 0.00361, 0.00201]
4-element Vector{Float64}:
 0.00361
 0.00201
 0.00361
 0.00201

julia> Polynomials.fit(x,y,2).coeffs
3-element Vector{Float64}:
  0.00265
 -0.0003199999999999998
 -2.5554890278056236e-19

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions