x= Fun(0..1); sx=space(x);
a=Fun(0..pi); sa=space(a);
fa= DefiniteIntegral(x*a,sx)
# i expect fa= a here
but i get MethodError. Are integrals of two arguments possible?
to practice your guiding i wrote
function Hankel(fx::Fun, spx,spa::Space)
spxa= spx ⊗ spa
fx2= Fun((x,a)-> fx(x), spxa)
fj= Fun((x,a) -> besselj0(x*a), spxa)
fa2= (DefiniteIntegral(dmx1) ⊗ I)*(fx2*fj*x)
fa= Fun(a->fa2(0,a), spa)
end
from the definition. It seems to work. Thank you!
Is this the style ApproxFun is expected to be used?
Is this the style ApproxFun is expected to be used?
In Julia, capital letters are only used when it returns a special type of the same name. So this would be better as lower case. Also, there is support for Green's functions in https://github.com/JuliaApproximation/SingularIntegralEquations.jl including Helmholtz / hankel kernels
when i blind try
spx= Space(0..1); spa= Space(0..π); spxa= spx ⊗ spa
Q2= DefiniteIntegral(spx.domain) ⊗ I
Q1= ApproxFun.SpaceOperator(Q2, spxa, spa )
x=Fun((x,a)->x,spxa); a=Fun((x,a)->a,spxa)
(Q2*(x*a))(0,1) #=0.5
(Q1*(x*a))(1) #=0.5*pi/2
it seems to work up to scaling cofficient
I'm quite sure Fun
used to work on intervals in the complex domain. But now
f(x) = cos(x)
Fun(f, Interval(1.0+1.0im, 2.0+2.0im))
throws the error
ERROR: MethodError: no method matching isless(::Complex{Float64}, ::Complex{Float64})
Closest candidates are:
isless(::Missing, ::Any) at missing.jl:66
isless(::InfiniteArrays.OrientedInfinity{Bool}, ::Number) at /.julia/packages/InfiniteArrays/Z4yap/src/Infinity.jl:145
isless(::Number, ::InfiniteArrays.OrientedInfinity{Bool}) at /.julia/packages/InfiniteArrays/Z4yap/src/Infinity.jl:144
...
Stacktrace:
[1] <(::Complex{Float64}, ::Complex{Float64}) at ./operators.jl:260
[2] >(::Complex{Float64}, ::Complex{Float64}) at ./operators.jl:286
[3] isempty(::Interval{:closed,:closed,Complex{Float64}}) at /.julia/packages/IntervalSets/xr34V/src/IntervalSets.jl:153
Hello, I was playing around with the poisson equation example and wonder if I could replace the RHS $f$ with something like $\delta (x) \delta (y)$. I tried to construct the RHS like this:
fx = KroneckerDelta()
fy = KroneckerDelta()
f = Fun((x,y) -> fx(x) * fy(y))
But I got the error that ERROR: MethodError: no method matching isless(::Int64, ::Nothing)
. What is the proper way for me to do that? Thanks in advance!
I’m trying to implement something like this FAQ example,
S = Chebyshev(1..2);
p = points(S,20); # the default grid
v = exp.(p); # values at the default grid
f = Fun(S,ApproxFun.transform(S,v));
but multi-variate (2D tensor Chebyshev will do). The canonical thing,
S = Chebyshev((1..2)^2)
p = points(S, 20)
errors. Of course I could just construct the points via tensor products, but then I’m unsure how to use the ApproxFun.transform(S,v)
correctly. Is this documented somewhere? Is there an example I can look at?
Basically, I just want to freeze the polynomial degree, rather than prescribe a solver tolerance.