Preben Alsholm

MaplePrimes Activity


These are replies submitted by Preben Alsholm

@666 jvbasha Your worksheet BAHAM.mw doesn't run without several errors on my machine in Maple 2020, Maple 2018 and Maple 18 (which you apparently use).

Since this is a new project you should start a new thread, where everybody is invited to participate.

@666 jvbasha Please see my response above to your question directed to several users including me.

Besides that be aware of misunderstanding my answers about plotting errors.

In my answer comparing the solution of an ivp with the given bvp the initial conditions for the ivp (ics) were taken from the bvp. Thus the best I can get out of a comparison is the comfort that they are pretty close.
The ics are "contaminated" by the numerical errors in solving the bvp of course, so the ivp will be too, besides introducing its own errors. So we are not plotting the actual errors in solving the bvp.

@666 jvbasha Are you talking about iterations done by `dsolve/numeric/bvp` ?

If so the answer is that you have no control over the number of iterations done in order to satisfy the abserr requirement.

You can give a value to maxmesh in the range 32 ..13421772 according to the help. But that doesn't give you the control you (probably) want.

You need to write your own algorithm to gain that control.

@Kitonum Yes, it was introduced in Maple 2019.

@666 jvbasha Notice that in R_init T comes first, then diff(T(eta),eta), then f(eta), etc.

Thus use the order:
H, H1, F, F1, F2, G, G1, G2 := op(rhs~(R_init[2 .. -1]));

and everything else is fine.

@Alger What do you mean by saying that " Variables of the model should be null when C<40e-6 and can be not null when C>40e-6 with imposing high range." ?

Do you mean that for C <40e-6 all the dependent variables (like e.g. ids(t))  go to zero as t -> infinity?

And for C>40e-6 they tend to a periodic solution (not identically 0)?

@Alger I had another look at your system. Although it starts out looking linear it ends up being highly nonlinear. Thus there isn't any a priori reason to deny the actual existence of singularities.

The "singularity" problem I ran into with C = 0.000050 and range 0..50 disappeared, however, when I used your original equations eq1, eq2, eq3, and eq4 together with ep5 and ep6.

Unfortunately, for C = 0.000045 and range 0..100 I still got a "singularity" at the same point you got one.

There are obvious numerical difficulties with this problem, so I'm still not convinced that a genuine singularity is present.

Here is the revised worksheet:

MaplePrimes20-04-30_odesystemII.mw

@Alger When dsolve/numeric talks about a probable singularity one should (as you surely do) notice the adjective "probable".

What exactly is a singularity in this numerical context? What triggers the error (or warning) message?
Your system is very complicated, so it isn't easy to see. It would be nice to find a simpler example with the same problem.

@Alger You get a similar complaint when keeping C at 0.000050 but changing the range from 0..40 to 0..50:

Warning, cannot evaluate the solution further right of 47.288331, probably a singularity.

 

@arashghgood You ask in the title " Is there a solution?".

Clearly without additional requirements there are the very trivial solutions f(x,y,t) = F1(t)*y+F2(t) , (where F1 and F2 are arbitrary).

But I have no idea about how to solve this type of problem numerically.

You could set infolevel[int]:=5:

restart;
integrand1 := (x^3*exp(arcsin(x)))/sqrt(1 - x^2);
integrand2 := (x^3*exp(1)^arcsin(x))/sqrt(1 - x^2);
###
infolevel[int]:=5:
res1:=int(integrand1,x);

res2:=int(integrand2,x)

The first 4 steps are the same, but then they. Obviously the choice of approach is governed by the integrand and they are different.

exp(arcsin(x)) is of type function and exp(1)^arcsin(x) is of type `^` .

@acer Your solution is obviously simpler, but I was about to give this answer:
Wrap the last block of assignment code in a procedure call with SF declared global:

proc() global SF; 
  map(x->assign(SF[x],cat(`SF/`,x)),
  ['('Par')', '('add_basis')', '('char2sf')', '('conjugate')',
   '('dominate')', '('dual_basis')', '('evalsf')', '('hooks')',
   '('itensor')', '('jt_matrix')', '('nextPar')', '('omega')',
   '('plethysm')', '('scalar')', '('sf2char')', '('skew')', '('stdeg')',
   '('subPar')', '('theta')', '('toe')', '('toh')', '('top')',
   '('tos')', '('varset')', '('zee')'])
end proc();


 

@Anthrazit Have you tried my Round procedure?

If so, any comments?

Using an old procedure of mine (chop) I made up the following procedure Round which uses chop.
This combination is very likely unnecessarily clumsy and also not perfect otherwise.

Since, however, my computer is going to a repair shop for booting problems this morning, I dare give the code here with only a few examples.

restart;
chop:=proc (x::anything, n::nonnegint:=0) local op1, op2, k; 
   if not hastype(x,float) then return x end if; 
   if x::float then
     if n=0 then return round(x) end if; 
     op1, op2 := op(x); 
     k := length(op1); 
     evalf[n](round(op1*10^(-k+n))*10^(op2-n+k)) 
   else 
     map(procname,x,n) 
   end if 
end proc:
#####
chop(89.567,0);
chop(sin(1.)+cos(3));
chop(89.567,3);
#####
Round:=proc(x::anything,d::nonnegint:=0) local tr,fr,L,res;
  if not hastype(x,{realcons,complexcons}) then return x end if;
  if x::float or x::integer then 
     tr,fr:=(trunc,frac)(x);
     res:=chop(fr,d)+tr
  elif x::realcons then
     res:=procname(evalf(x),d)
  elif x::complexcons then
     res:=procname(Re(evalf(x)),d)+I*procname(Im(evalf(x)),d)
  else
     res:=evalindets(x,{realcons,complexcons},procname,d)
  end if;
  res
end proc:
#####
Round(4.56789,0);
sqrt(3.);
Round(sqrt(3),4);
Round(4567);
Round(sqrt(2*I),3);
Round([89,sqrt(2)],3);
Round(sin(Pi*x+I*sin(1)),0);
Round(Matrix([[78*Pi,sin(x*exp(1))],[exp(1)*I,erf(4)]]),4);


 

What should acer's Round(123456,2) return in your opinion?

First 31 32 33 34 35 36 37 Last Page 33 of 231