Function 朱莉娅:什么;这是错误!拉格朗日多项式函数

Function 朱莉娅:什么;这是错误!拉格朗日多项式函数,function,julia,polynomials,Function,Julia,Polynomials,============================================= 执行时 LoadError:不精确错误() 在[76]中加载时,在从第1行开始的表达式中 在lg at in[74]:11中,一个范围内的个数创建一个Int64数组: function lg(X,Y,Xint) n = length(X) L = ones(1:n) for k = collect(1:n) L[k] = 1 for c = collect(1:

=============================================

执行时

LoadError:不精确错误() 在[76]中加载时,在从第1行开始的表达式中


在lg at in[74]:11中,一个范围内的个数创建一个Int64数组:

function lg(X,Y,Xint)

  n = length(X)
  L = ones(1:n)  

  for k = collect(1:n) 

     L[k] = 1
     for c = collect(1:n)            
         if c!=k
             L[k] = (L[k]*( Xint - X[c] ))/( X[k] - X[c] )
         end
     end        
  end
   return sum(Y.*L)
 end
julia> o = ones(1:3)
3-element Array{Int64,1}:
 1
 1
 1

julia> o[1] = 3.5
ERROR: InexactError()
 in setindex!(::Array{Int64,1}, ::Float64, ::Int64) at ./array.jl:339
 in eval(::Module, ::Any) at ./boot.jl:226
无法将Float64分配到Int64数组中(您会遇到此错误)

您只需使用
ones(n)
即可获得Float64数组:

function lg(X,Y,Xint)

  n = length(X)
  L = ones(1:n)  

  for k = collect(1:n) 

     L[k] = 1
     for c = collect(1:n)            
         if c!=k
             L[k] = (L[k]*( Xint - X[c] ))/( X[k] - X[c] )
         end
     end        
  end
   return sum(Y.*L)
 end
julia> o = ones(1:3)
3-element Array{Int64,1}:
 1
 1
 1

julia> o[1] = 3.5
ERROR: InexactError()
 in setindex!(::Array{Int64,1}, ::Float64, ::Int64) at ./array.jl:339
 in eval(::Module, ::Any) at ./boot.jl:226

旁注:在迭代某个范围之前,不需要
收集

julia> ones(3)
3-element Array{Float64,1}:
 1.0
 1.0
 1.0
相反,只需在范围内迭代:

for k = collect(1:n)

嗨,安迪,它现在可以工作了!谢谢!;)-----------------好极了请不要投票和:)