Using ApproxFun.jl to solve a Volterra equation of the second kind

I’m trying to learn how to solve Volterra equations of the second kind using ApproxFun.jl.

For example, consider the following equation, where u is an unknown function on [0,1/2].

volteq

The closest similar example I could find was this, but I don’t know how to include the information regarding the different limits of integration, so ApproxFun.jl is giving me a u that is different from the solution that I can solve for analytically.

Can anyone help? I’ve tried the documentation, but I don’t quite yet see how to adapt the examples there to the equation I have.

I’ll have a look and get back to you

1 Like

Just to confirm: it’s 1/(1-x) and not 1/(1-t), correct? So that the term can be pulled out? I think this works:

d = Segment(0.5,0)
x = Fun(d)
V = Volterra(Legendre(d))
u = (I - 1/(1-x) * V) \ 1

If you meant 1/(1-t) just put it to the right of the V, (using a bracket so it knows you don’t want to apply the operator to the function 1/(1-x)):

u = (I - V[1/(1-x)]) \ 1
2 Likes

Yes, my original post was correct, but the last line is good to know for more general versions of the problem I’m considering.

Thank you so much!

(post deleted by author)

Coming back to this, I am wondering what is the best way to represent

\int_0^1\exp(-|t-s|)u(s)ds

Indeed, if using a definite integral, the kernel is not smooth. We can cut it in two volterra kernels but the second one is \int_t^1 \exp(-s)u(s)ds et I dont know how to reverse Volterra