Fun is both a “type” but also has constructor functions. Try
methods(Fun)
> On 23 Mar 2015, at 7:58 pm, Dominic Steinitz <[email protected]> wrote:
>
> Ah my apologies - Haskell is my main language and I am used to being told
> that I have missed an argument and I still haven’t got my head round Julia’s
> type system.
>
>> julia> typeof(Fun)
>> DataType
>
>> julia> help(Fun)
>> DataType : ApproxFun.Fun{S<:ApproxFun.FunctionSpace{T,D},T<:Number}
>> supertype: Any
>> fields : [:coefficients,:space]
>
> It would be nice if julia told you what arguments a function required.
> Perhaps it does and I just don’t know how to ask it nicely.
>
> Anyway the good news is that I get a very accurate answer (since I know the
> answer analytically in this case). Thanks for your help and for a great
> package.
>
> Dominic Steinitz
> [email protected] <mailto:[email protected]>
> http://idontgetoutmuch.wordpress.com <http://idontgetoutmuch.wordpress.com/>
> On 22 Mar 2015, at 09:25, Sheehan Olver <[email protected]
> <mailto:[email protected]>> wrote:
>
>> You can do the following
>>
>> d = Interval(0,1)
>> f1 = Fun(x->0,d)
>> f2 = Fun(x->1 / ((1 + x)^2 + 1),d)
>> f3 = Fun(y->y / (1 + y^2),d)
>> f4 = Fun(y->y / (4 + y^2),d)
>>
>> u = [dirichlet(d^2),lap(d^2)]\[f1,f2,f3,f4]
>>
>>
>>
>>> On 22 Mar 2015, at 7:35 pm, Dominic Steinitz <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>> Ah thanks - that produces an answer. However I want the boundary conditions
>>> to be on [0,1]^2. I tried
>>>
>>>> dd = (domain(Fun(identity,[0.0,1.0])))^2
>>>
>>>
>>>> u = [dirichlet(dd),lap(dd)]\[f1,f2,f3,f4]
>>>
>>>
>>> but this gives me
>>>
>>>> julia> u = [dirichlet(dd),lap(dd)]\[f1,f2,f3,f4]
>>>> WARNING: [a,b] concatenation is deprecated; use [a;b] instead
>>>> in depwarn at
>>>> /Applications/Julia-0.4.0-dev-5587ca352f.app/Contents/Resources/julia/lib/julia/sys.dylib
>>>> in oldstyle_vcat_warning at
>>>> /Applications/Julia-0.4.0-dev-5587ca352f.app/Contents/Resources/julia/lib/julia/sys.dylib
>>>> in vect at abstractarray.jl:35
>>>> ERROR: AssertionError: domainscompatible(a,b)
>>>> in conversion_rule at
>>>> /Users/dom/.julia/v0.4/ApproxFun/src/Spaces/Ultraspherical/UltrasphericalOperators.jl:313
>>>> in conversion_type at
>>>> /Users/dom/.julia/v0.4/ApproxFun/src/Fun/FunctionSpace.jl:146
>>>> in coefficients at
>>>> /Users/dom/.julia/v0.4/ApproxFun/src/Fun/FunctionSpace.jl:233
>>>> in * at /Users/dom/.julia/v0.4/ApproxFun/src/Operators/algebra.jl:398
>>>> in cont_reduce_dofs! at
>>>> /Users/dom/.julia/v0.4/ApproxFun/src/PDE/cont_lyap.jl:20
>>>> in cont_reduce_dofs! at
>>>> /Users/dom/.julia/v0.4/ApproxFun/src/PDE/cont_lyap.jl:64
>>>> in cont_constrained_lyap at
>>>> /Users/dom/.julia/v0.4/ApproxFun/src/PDE/cont_lyap.jl:297
>>>> in pdesolve at /Users/dom/.julia/v0.4/ApproxFun/src/PDE/pdesolve.jl:127
>>>> in pdesolve at /Users/dom/.julia/v0.4/ApproxFun/src/PDE/pdesolve.jl:126
>>>> in pdesolve at /Users/dom/.julia/v0.4/ApproxFun/src/PDE/pdesolve.jl:101
>>>> in \ at /Users/dom/.julia/v0.4/ApproxFun/src/PDE/pdesolve.jl:138
>>>
>>>
>>> I am not clear which domains are incompatible.
>>>
>>> Dominic Steinitz
>>> [email protected] <mailto:[email protected]>
>>> http://idontgetoutmuch.wordpress.com <http://idontgetoutmuch.wordpress.com/>
>>> On 22 Mar 2015, at 02:25, Sheehan Olver <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>>>
>>>> It's expanding f1-f4 as bivariate functions on [-1,1]^2, but instead you
>>>> want to expand them as univariate functions on [-1,1]:
>>>>
>>>> d = Interval()^2
>>>>
>>>> f1 = Fun(x->0)
>>>> f2 = Fun(x->1 / ((1 + x)^2 + 1))
>>>> f3 = Fun(y->y / (1 + y^2))
>>>> f4 = Fun(y->y / (4 + y^2))
>>>>
>>>> u = [dirichlet(d),lap(d)]\[f1,f2,f3,f4]
>>>>
>>>>
>>>>
>>>> On Sunday, March 22, 2015 at 8:02:45 AM UTC+11, idontgetoutmuch wrote:
>>>>
>>>>
>>>> I am trying to solve Laplace's equation using ApproxFun with the following
>>>> boundary conditions
>>>>
>>>> {
>>>> \phi(x, 0) &= 0 \\
>>>> \phi(x, 1) &= \frac{1}{(1 + x)^2 + 1} \\
>>>> \phi(0, y) &= \frac{y}{1 + y^2} \\
>>>> \phi(1, y) &= \frac{y}{4 + y^2}
>>>> \end{aligned}
>>>> }
>>>>
>>>> I'm not clear how to express these. I've tried
>>>>
>>>> {
>>>> d = Interval()^2
>>>>
>>>> f1 = Fun((x,y)->0)
>>>> f2 = Fun((x,y)->1 / ((1 + x)^2 + 1))
>>>> f3 = Fun((x,y)->y / (1 + y^2))
>>>> f4 = Fun((x,y)->y / (4 + y^2))
>>>>
>>>> u = [dirichlet(d),lap(d)]\[f1,f2,f3,f4]
>>>> }
>>>>
>>>> and
>>>>
>>>> {
>>>> u = [dirichlet(d),lap(d)]\[zeros(1),f2,f3,f4]
>>>> }
>>>>
>>>> but in both cases I get errors (which I can attach).
>>>>
>>>> I can see ldirichlet and rdirichlet exist but I need to specify the top
>>>> and bottom as well.
>>>
>>
>