In [7]:
println(readall(`cmd /c type lin_int2.jl`))
In [8]:
include("lin_int2.jl")
Out[8]:
In [9]:
f=lin_inter(grid,vals)
In [10]:
g(x)=2*sin(x)+3*cos(2x)+1.5
Out[10]:
In [36]:
using PyPlot
x=linspace(0,5,100)
y=linspace(0,4.9,100)
plot(x,g(x),label="Original")
units=[1,2,5]
for i in 1:3
n=5*units[i]
grid=Array(Float64,n+1)
vals=Array(Float64,n+1)
for j in 1:n+1
grid[j]=(j-1)/units[i]
vals[j]=g((j-1)/units[i])
end
f=lin_inter(grid,vals)
plot(y, f(y),label="lin_int by$(1/units[i])")
end
title("Linear Interpolation")
legend()
Out[36]:
In [34]:
function lin_inter(grid,vals)
function func(x::Real)
n = length(grid)
if x<grid[1]
print("Error")
elseif x > grid[n]
print("Error")
else index=searchsortedlast(grid,x)
return (vals[index+1]-vals[index])/(grid[index+1]-grid[index])*(x-grid[index])+vals[index]
end
end
function func{T<:Real}(x::AbstractVector{T})
m=length(x)
out=Array(Any,m)
for i in 1:m
out[i]=func(x[i])
end
return out
end
return func
end
Out[34]:
In [21]:
f(1)
In [22]:
f=lin_inter(grid,vals)
In [ ]: