2016-05-28 17 views
4
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: Was ist Erro! Lagrange-Polynom-Funktion

Wenn Ausgeführt

Loaderror: InexactError() während ladend In [76], in Ausdruck beginnend in Zeile 1

in lg bei In [74]: 11?

Antwort

3

ones ein Bereich erstellt einen Int64 Array:

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 

Sie keinen Float64 in eine Int64 Array zuweisen kann (diese Fehlermeldung angezeigt).

Sie wollen ones(n) nur verwenden, um ein Float64 Array zu erhalten:

julia> ones(3) 
3-element Array{Float64,1}: 
1.0 
1.0 
1.0 

Randbemerkung: Sie brauchen nicht zu collect vor über einen Bereich iterieren:

for k = collect(1:n) 

statt iterieren Sie einfach über den Bereich:

for k = 1:n 
+0

, d. H. "L = Ein (n)". –

+0

Hallo Andy es funktioniert jetzt! –

+0

Danke! ;) ----------------- –

Verwandte Themen