I already know how I could implement this for a given dimensionality. For
example, for the two-dimensional case I can define:
immutable twoDimSimplex
weight1::Float64
weight2::Float64
twoDimPortfolio(x::Float64, y::Float64) = (abs(x+y - 1) > 1e-10) ?
error("entries must sum to one") : new(x,y)
end
However, I do not get how I could extend this for the n-dimensional case.
Here, I thought that I would have to use one field which stores a
n-dimensional vector:
immutable nDimSimplex
points::Vector{Float64}
nDimSimplex(x::Vector{Float64}) = (abs(sum(x) - 1) > 1e-10) ?
error("entries must sum to one") : new(x)
end
Now, I think that it will not be possible to change the vector that the
field points to. However, the entries of the vector itself still can be
changed without restrictions. Any recommendations?
On Tuesday, 31 December 2013 12:33:57 UTC+1, Tim Holy wrote:
>
> Use an immutable
> http://docs.julialang.org/en/release-0.2/manual/types/#immutable-composite-
> types
> with an inner constructor:
> http://docs.julialang.org/en/release-0.2/manual/constructors/#inner-
> constructor-methods<http://docs.julialang.org/en/release-0.2/manual/constructors/#inner-constructor-methods>
>
>
> You may find the example
> http://docs.julialang.org/en/release-0.2/manual/constructors/#case-study-
> rational
> helpful.
>
> Best,
> --Tim
>
>