|
1 | 1 | pkgs = keys(Pkg.installed()) |
2 | 2 |
|
| 3 | +function get_points(f::Function, options=Dict()) |
| 4 | + opt = merge(["left"=>-10, "right"=>10, "step"=>0.5, "name"=>"$f"], options) |
| 5 | + n::Int = (opt["right"] - opt["left"]) / opt["step"] + 1 |
| 6 | + X = Float64[0 for i in 1:n] |
| 7 | + Y = Float64[0 for i in 1:n] |
| 8 | + for i in 1:n |
| 9 | + x = opt["step"]*(i-1) + opt["left"] |
| 10 | + y = f(x) |
| 11 | + X[i] = round(x, 8) |
| 12 | + Y[i] = round(y, 8) |
| 13 | + end |
| 14 | + print(["x"=>X, "y"=>Y, "type"=>"scatter", "mode"=>"lines", "name"=>opt["name"]]) |
| 15 | + return ["x"=>X, "y"=>Y, "type"=>"scatter", "mode"=>"lines", "name"=>opt["name"]] |
| 16 | +end |
| 17 | + |
| 18 | +function plot(fs::Array{Function,1}, options=Dict()) |
| 19 | + data = [get_points(f, options) for f in fs] |
| 20 | + return plot([data], options) |
| 21 | +end |
| 22 | + |
| 23 | +function plot(f::Function, options=Dict()) |
| 24 | + return plot([f], options) |
| 25 | +end |
| 26 | + |
3 | 27 | if in("Polynomial", pkgs) |
4 | 28 | using Polynomial |
5 | | - function get_points(p::Poly, left, right, step) |
6 | | - n::Int = (right - left) / step + 1 |
7 | | - X = Float64[0 for i in 1:n] |
8 | | - Y = Float64[0 for i in 1:n] |
9 | | - for i in 1:n |
10 | | - x = step*(i-1) + left |
11 | | - y = polyval(p, x) |
12 | | - X[i] = x |
13 | | - Y[i] = y |
14 | | - end |
15 | | - return ["x"=>X, "y"=>Y, "type"=>"scatter", "mode"=>"lines", "name"=>"$p"] |
16 | | - end |
17 | 29 |
|
18 | 30 | function plot{T<:Number}(ps::Array{Poly{T},1}, options=Dict()) |
19 | | - opt = merge(options, ["left"=>-10, "right"=>10, "step"=>0.5]) |
20 | | - data = [get_points(p, opt["left"], opt["right"], opt["step"]) for p in ps] |
| 31 | + data = [get_points(x->polyval(p,x), merge(["name"=>"$p"], options)) for p in ps] |
21 | 32 | return plot([data], options) |
22 | 33 | end |
23 | 34 |
|
|
0 commit comments