Btw I fixed a bug so now norm((exp(u)-exp(-u))-2diff(u)./(x+1)-diff(u,2))
returns 0.0 (not sure why not machine eps…) On 21 Jun 2014, at 10:58 pm, 'Stéphane Laurent' via julia-users <julia-users@googlegroups.com> wrote: > Sorry but I really don't understand you first sentence. > About the code, I will possibly experiment it during the next days or weeks, > and I'll send you some feedback. > Thank you again for this library and your help. > - Stéphane > > Le samedi 21 juin 2014 14:24:03 UTC+2, Sheehan Olver a écrit : > Thanks! > > I'm interested to know if the ultraspherical spectral approach has any clear > advantages over spectral collocation for nonlinear odes. (For linear odes the > advantages are clear.) > > So if you find the code better than expected please let me know. It's a bit > buggy and unoptimized, so chances are you won't. > > Sent from my iPad > > On 21 Jun 2014, at 10:15 pm, 'Stéphane Laurent' via julia-users > <julia...@googlegroups.com> wrote: > >> Ok, I understand. It works and it is really awesome. Thank you ! >> >> >> Le samedi 21 juin 2014 12:17:22 UTC+2, Sheehan Olver a écrit : >> Hi, >> >> >> You didn’t quite get the Newton iteration right: if you want to solve >> >> B u + [1,0] = 0 >> L u + g(u) = 0 >> >> then Newton iteration becomes >> >> u = u - [B, L + g’(u)]\[B u + [1,0], L u + g(u)] >> >> >> i.e., your bc right hand side is not right. Below is the corrected code. >> >> Cheers, >> >> Sheehan >> >> >> >> x=Fun(identity, Interval(0.,1.)) >> d=x.domain >> B=neumann(d) >> D=diff(d) >> # Solves Lu + g(u)-1==0 >> L = D^2 + 2/(x.+1)*D >> g = u -> -(exp(u)-exp(-u)); gp = u -> -(exp(u)+exp(-u)) >> >> u=-0.3*x+0.5 #initial guess >> >> for k=1:5 # this crashes if Ii increase the number of iterations >> u=u-[B,L+gp(u)]\[diff(u)[0.]+1.,diff(u)[1.],L*u+g(u)]; >> end >> >> plot(u) >> >> On 21 Jun 2014, at 6:54 pm, 'Stéphane Laurent' via julia-users >> <julia...@googlegroups.com> wrote: >> >>> Hello, >>> >>> I'd like to solve this equation with Neumann boundary conditions. My code >>> below does not work. Am I doing something bad or is it a failure of the >>> Newton algorithm ? >>> >>> # solves u" = (exp(u)-exp(-u))-2u'/(x+1) , u'(0)=-1, u(1)=0 >>> x=Fun(identity, Interval(0.,1.)) >>> d=x.domain >>> B=neumann(d) >>> D=diff(d) >>> # Solves Lu + g(u)-1==0 >>> L = D^2 + 2/(x.+1)*D >>> g = u -> -(exp(u)-exp(-u)); gp = u -> -(exp(u)+exp(-u)) >>> >>> u=-0.3*x+0.5 #initial guess >>> >>> for k=1:5 # this crashes if Ii increase the number of iterations >>> u=u-[B,L+gp(u)]\[-1.,0.,L*u+g(u)]; >>> end >>> >>> >>> The solution should look like that : >>> >>> >>> >>> >>