Пожалуйста, включите в свой вопрос отдельный пример того, что мы можем воспроизвести сами.Также стоит указать значение versioninfo()
, так как проблемы могут быть вызваны различными комбинациями версий / платформ.
Чтобы ответить на ваш вопрос, я сначала запустите ваш код на своей платформе:
versioninfo()
Julia Version 0.6.3
Commit d55cadc350 (2018-05-28 20:20 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz
WORD_SIZE: 64
BLAS: libopenblas (NO_AFFINITY SANDYBRIDGE MAX_THREADS=8)
LAPACK: liblapack
LIBM: libopenlibm
LLVM: libLLVM-3.9.1 (ORCJIT, ivybridge)
Вывод вашего кода дает мне:
Pkg.add("Polynomials")
using Polynomials
x = []
for i in 1:9
append!(x, i)
end
y = [1,2,3,4,3,4,2,3,1]
polyfit(x, y)
ERROR: `float` not defined on abstractly-typed arrays; please convert to a more specific type
Stacktrace:
[1] float at ./float.jl:848 [inlined]
[2] polyfit(::Array{Any,1}, ::Array{Int64,1}, ::Int64, ::Symbol) at /home/aytekin/.julia/v0.6/Polynomials/src/Polynomials.jl:708
[3] polyfit(::Array{Any,1}, ::Array{Int64,1}) at /home/aytekin/.julia/v0.6/Polynomials/src/Polynomials.jl:700
[4] eval(::Module, ::Any) at ./boot.jl:235
Ошибка возникает из-за того, как вы определяете переменную x
.Если вы напишите typeof(x)
, вы поймете, что это Array{Any,1}
.Вы определяете одномерный пустой массив типа Any
, когда пишете x = []
.Затем вы добавляете значения к нему.Определение контейнеров абстрактных типов (Any
- это абстрактный тип, все типы которого julia
являются подтипами) не подходит для целей эффективности.Более того, добавление к вектору, как вы делаете, также не является хорошей практикой.Помимо вопросов эффективности, x
должен быть Vector
типа Number
.Короче говоря, если вы измените свой код следующим образом:
x = collect(1:9)
typeof(x)
y = [1,2,3,4,3,4,2,3,1]
typeof(y)
p = polyfit(x, y)
Вы, вероятно, увидите, что обе переменные x
и y
равны Vector
с Int64
.Кроме того, вы получите свой полином.
Пожалуйста, ознакомьтесь с содержанием Документация Джулии .Особенно полезным будет раздел Примечательные отличия от других языков , если вы используете один из этих языков.