JuliaMath / JuliaMath/Polynomials.jl

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

Open
#579 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
320
Forks
80
Avg merge
8h 46m
Merged PRs (30d)
3

Description

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

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.