2.5 part 2
Julia codes
for loop
code
# 2.5.for.jl
# 2022-05-05
r = 0.1
cfs = [500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3,
500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3]
i = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
function pv(r, cfs, i)
v = 0
for (x, k) in zip(cfs, i)
v += x / (1 + r) ^ k
end
return v
end
println("2.5.for.jl")
println("pv = ", round(Int, pv(r, cfs, i)))
# eof
内包(comprehension)
code
# 2.5.comprehension.jl
# 2022-05-05
r = 0.1
cfs = [500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3,
500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3]
i = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
function pv(r, cfs, i)
sum([x / (1 + r) ^ k for (x, k) in zip(cfs, i)])
end
println("2.5.comprehension.jl")
println("pv = ", round(Int, pv(r, cfs, i)))
# eof
output
ジェネレータ式(generator expression)
code
# 2.5.generator.jl
# 2022-05-05
r = 0.1
cfs = [500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3,
500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3]
i = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
function pv(r, cfs, i)
sum(x / (1 + r) ^ k for (x, k) in zip(cfs, i))
end
println("2.5.generator.jl")
println("pv = ", round(Int, pv(r, cfs, i)))
# eof
function map
code
# 2.5.map.jl
# 2022-05-05
r = 0.1
cfs = [500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3,
500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3]
i = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
function pv(r, cfs, i)
sum(map((x, k)-> x / (1 + r) ^ k, cfs, i))
end
println("2.5.map.jl")
println("pv = ", round(Int, pv(r, cfs, i)))
# eof
ドット演算子("dot" operator)
code
# 2.5.dot.jl
# 2022-05-05
r = 0.1
cfs = [500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3,
500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3]
i = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
function pv(r, cfs, i) # simple
sum(cfs ./ (1 + r) .^ i)
end
println("2.5.dot.jl")
println("pv = ", round(Int, pv(r, cfs, i)))
# eof
function sum(f, itr)
code
# 2.5.sum.jl
# 2022-05-05
r = 0.1
cfs = [500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3,
500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3]
i = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
function pv(r, cfs, i)
function f((x, k))
x / (1 + r) ^ k
end
sum(f, zip(cfs, i))
end
println("2.5.sum.jl")
println("pv = ", round(Int, pv(r, cfs, i)))
# eof
dot syntax for vectorizing function
code
# 2.5.dot_f.jl
# 2022-5-5
function pv(r, x, k)
x / (1 + r) ^ k
end
# input
r = 0.1
cfs = [500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3,
500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3, 500e3]
i = 0:19
# dot syntax for vectorizing function
sum_pv = sum(pv.(r, cfs, i)) # dot syntax for vectorizing function
# output
println("2.5.dot_f.jl")
println("pv = $(round(Int, sum_pv))")
# eof
参考文献
- 近藤裕之、佐藤建太:1から始めるJuliaプログラミング、コロナ社、2020.
- Julia公式ページ:https://julialang.org/
history
2022-05-05 revise julia codes.
2021-05-30 add 2.5.6.jl.
2021-02-14 move history.
2020-10-24 revise.
2020-10-17 create this page.