mmcdara

7891 Reputation

22 Badges

9 years, 54 days

MaplePrimes Activity


These are replies submitted by mmcdara

@MaPal93 

I believe I do not have to answer your point 3 because the anser was in 141123_Problem_NoCorrelation_mmcdara_2.mw

About point 1

  1. You can choose any value you want for lambda__2 and lambda__3 and thus get the corresponding value of lambda__1.
     
  2. Is it true for all positive combinations of lambda_2 and lambda_3 that the roots of the numerators are also those of the denominators of my equations?
    I assume here you are talking about files 141123_Problem_NoCorrelation_mmcdara.mw and 141123_Problem_NoCorrelation_mmcdara_2.mw because I didn't evaluate the denominators in file 141123_Problem_mmcdara.mw.
    The answer to your underllined question is of course YES IT IS TRUE THAT ...
    Look to what I did (right below): where do you see that I used specific values for lambda__2 and lambda__3 that could give incidentlly nill denominators?
    sol_solve := solve(EqN, Vars):
    sol_solve := simplify(sol_solve, size):
    map(simplify, convert(eval(denom(Eqs_cal), sol_solve), list));
                               [0, 0, 0]
    

    sol_solve is a formal solution, not a numeric one.

    Look after the text The roots of the numerators are those of the denominators..., in this new file to see what happens when the lambdas are the roots of system EqN
    141123_Problem_NoCorrelation_mmcdara_3.

     

By the way, I've already spent hours to help you, don'y you think I deserve,at least, that you vote up?

@MaPal93 

Meaning of AllTotalDegrees:
AllTotalDegrees is a list of triples, if such a triple is [a, b, c]  then at least one of the equations to solve contains the term

​​​​​​(lambda__1)^a *  (lambda__2)^b *  (lambda__3)^c 



In the second script of yours (where you try to solve for the numerators):
It is you who tried to solve for the numerators, 
The lines

Eqs_redox := eval(Eqs_cal, p = .5); 
EqN := numer(Eqs_cal); nops(%); 
length(EqN); 
EqN_redox := eval(numer(Eqs_redox), lambda__1 = lambda__2); nops(%); 
length(EqN_redox)

are yours, not mine, I just added after them

sol_solve := solve(EqN, Vars):



Why did you use  SolveTools:-PolynomialSystem instead of solve?
(If I'm not mistaken it was a suggestion from @acer but I can't remember why he proposed that?)
Look to this new file from the text  Using SolveTools:-PolynomialSystem
141123_Problem_NoCorrelation_mmcdara_2.mw

Last advice: if you really want to understand what SolveTools:-PolynomialSystem is telling you begin to read these help pages

  • RegularChains
  • PolynomialRing
  • ComprehensiveTriangularize
  • PolynomialSystem

and read some papers or books about the subject... or act simpler.

@Carl Love 

Thanks for your feedback and, by the way, but don't feel obliged to spend too much time my code.

BTW, I wonder if I have not already ask a question about seaching all the occurrences of a specific entry in a hierarchical table, but  couldn't put the finger on it (maybe sevenor eight years ago)

@Carl Love 

Thanks your comments and corrections.

I tried writting a procedure that searches within a hierarchical table (a table whose entries can be tables, and so on) for all the indices where a given entry appears.
Here it is.
 

restart

f := proc(t::table, v::numeric)
  local  r, it, j, depth:
  global here:
  r := select((x->is(rhs(x)=v)), [entries(t,'pairs')]);
  if r <> [] then
    if nargs = 2 then
      here  := (`[]`@lhs)~(r):
      depth := []:
    else
      depth := _passed[3]:
      here  := here, map(i -> [depth[], lhs(i)], r);
    end if:
    it := map(j -> if type(t[j], table) then j end if, [indices](t, nolist));
    if it <> [] then
      for j in it do
        depth := [depth[], j]:
        thisproc(eval(t[j]), v, depth);
      end do
    else
      depth := []
    end if;
  else
    here := []
  end if:
end proc:
 

T := table([ 1=23, 5=36, 3=14, 4=51, 10=51 ]);

here := NULL:
f(T, 51):
map(op, [here]);

table( [( 1 ) = 23, ( 3 ) = 14, ( 4 ) = 51, ( 5 ) = 36, ( 10 ) = 51 ] )

 

[[4], [10]]

(1)

T := table([ 1=23, 5=36, 3=14, 4=51, 6=table([2=0, 4=51]), 10=51, 0=table([1=8, -3=51, a=table([1=23, r=51, s=51])]) ]):

# From CarlLove
(T-> subsindets(subsindets(`<,>`(op(T)), table, thisproc), list, `<,>`))(T);

here := NULL:
f(T, 51):
map(op, [here]);

Vector(1, {(1) = Vector(7, {(1) = 0 = (Vector(3, {(1) = 1 = 8, (2) = -3 = 51, (3) = a = (Vector(3, {(1) = 1 = 23, (2) = r = 51, (3) = s = 51}))})), (2) = 1 = 23, (3) = 3 = 14, (4) = 4 = 51, (5) = 5 = 36, (6) = 6 = (Vector(2, {(1) = 2 = 0, (2) = 4 = 51})), (7) = 10 = 51})})

 

[[4], [10], [0, -3], [0, a, r], [0, a, s], [0, 6, 4]]

(2)

 

 

Download Recursive_search.mw

 


Explanation (highlighted is a wrong index, should be [6, 4])

here = [[4], [10]], [[0, -3]], [[0, a, r]], [[0, 6, 4]]

means that the target value (51) is an entry of T[4], T[0][-3], T[0][a][r], ...

Note that I used 

[entries(t,'pairs')]

instead of 

op(op(t))

because op(op(t)) is a list when procedure f is entered the first time, but a sequence when it is entered through thisproc.
(this seems weird to me)


If it's not too much trouble, could you help me correct this procedure, and suggest a more effective version?
Or do you think it would be better if I open a specific thread?

@Carl Love 

You're right, I didn't completely answered the question.
I edited my comment and completed it to account your remark.

@dharr 

My using isolate instead of solve is mainly a matter of laziness: isolate(equation, v) returns an equality that can directly be used in eval,  as solve (eq, v) requires writing v=solve (eq, v) to be used in eval.

@dharr 

I'm not at ease with eliminate and I often have to do several trials to get what I want.

Nice, I vote yup.

What is a(T) ?

@dharr 

Thanks

@shashi598

I adapted the Metropolis-Hastings' algorithm (developed to sample an unknown random variable) to find the values of alpha such that D(gamma)(xi__1) = 0.
(
More precisely, as the right boundary condition is gamma(xi__1)+xi__1* D(gamma)(xi__1) = 0, the previous condition is equivalent to gamma(xi__1) = 0, and it is equivalent to search for the values of alpha which make this identity true, or for values of alpha which minimize gamma(xi__1)^2.
I made this latter choice.
)

I got only 2 values (global minima of gamma(xi__1)^2) in the range alpha=1..10:

  1. alpha = 3.7026096348364278322
  2. alpha = 4.2985527068692070036

and 4 local minima (that is minima where gamma(xi__1)^2 is small but not null):

  1. alpha = 5.3002873922249993805
  2. alpha = 6.0544400684250000630
  3. alpha = 7.5717744989250001680
  4. alpha = 8.3303294592000002940

The type (local/global) of the minima are verified graphically.

You will note these values differ from those from the paper you cite.

Reply me if you still read this thread ad are interested to my code.

@Ronan 

Thank you Ronan

Could you check them?

@shashi598 

Explanation:

Is I'm not mistaken you want to find the value alpha such that diff(gamma(xi), xi) = 0 at xi=xi__1.
Which, give, that gamma(xi) + xi * diff(gamma(xi), xi) = 0 at xi=xi__1, is equivalent to find the value alpha such that gamma(xi) = 0 at xi=xi__1.

Here is the plot, with a logarithmic vertical axis, of gamma(xi__1)^2 in the range 1..6:


Then a focus on the range 3.5..4


and another on the range 4..6

Here are the values of alpha that minimize H(xi) = amma(xi__1)^2 when alpha is assumed to move in diffferent ranges:

This last plot completes the previous one by adding, in gray", the basins of attraction of red points, and in green those of the blue points.
Depending on your starting point in the range 4..6, NLPSolve will get anyone of the 5 points.
By default the starting point (if not specified with the option initialpoint) is the mid point of the searching range, thus 5 here.
Starting from 5 will return the first leftmost red point on this figure (that is your alpha2_result point).

Using DirectSearch may enable jumping out of this basin of attraction (the leftmost green rectangle) for it is not very deep.
Unfortunately the algorithm ends hitting the right boundary of the search domain (where the value of gamma(xi__1)^2 is lower than those at the red point, so it indeed minimizes the objective, at least in some way), but it misses the blue points because of their thinness and a bad tunning (I guess so) of the algorithm. 




Isn't it this a duplicate of thar previous question?

BTW, why do you persist in doing the same mistake (unknown=f(x) and parameter mu[f])?
Did you read my answer?


More of this your 4 equations are both identical except for the name of the dependent function, so their solutions will be fundamentaly identical it it is stupid to dsolve 4 equations.
The generic form of these equations is given by coeff(HPMeq, p, 1).
Before doing complex things  ask yourself if this equation can be solved formally; 

# example
test := coeff(HPMEq, p, 0);

# A solution is returned here
Without_bc := dsolve(test);   

# But not here
With_bc := dsolve({test, F[0](1) = 1, F[0](-1) = -1, (D(F[0]))(1) = 0, (D(F[0]))(-1)})

So trying to take the rhs of this last ouput generates the error message you got.

The only way is to dsolve numerically

{test, F[0](1) = 1, F[0](-1) = -1, (D(F[0]))(1) = 0, (D(F[0]))(-1)}

which implies to replace the many parameters by their numerical values.

Make an effort to understand all this and to submit us something that is worth us spending time answering, otherwise it's all a waste of  time for the people here.

@Saha 

 

restart;

with(plots):

 

HERE IS A CORRECT WAY TO CODE THE THINGS

Note that I treated ONLY the first ode.

With a little effort you should be capable to generalize this to the two other odes, so stop
doing again and again the same errors and try to learn something.

 

eq1 := mu[hnf]*rho[f]*(diff(F(x), x, x, x, x))/(rho[hnf]*mu[f])+3*alpha*(diff(F(x), x, x))+alpha*eta*(diff(F(x), x, x, x))-2*R*F(x)*(diff(F(x), x, x, x))-rho[f]*M*(diff(F(x), x, x))/rho[hnf] = 0;

mu[hnf]*rho[f]*(diff(diff(diff(diff(F(x), x), x), x), x))/(rho[hnf]*mu[f])+3*alpha*(diff(diff(F(x), x), x))+alpha*eta*(diff(diff(diff(F(x), x), x), x))-2*R*F(x)*(diff(diff(diff(F(x), x), x), x))-rho[f]*M*(diff(diff(F(x), x), x))/rho[hnf] = 0

(1)

a1 := { phi[1] = 0.1e-1, phi[2] = 0.1e-1, R = 1.0, M = 1, alpha = -1, eta = 1 }:
a2 := { phi[1] = 0.1e-1, phi[2] = 0.1e-1, R = 1.0, M = 1, alpha = -.5, eta = 1 }:
a3 := { phi[1] = 0.1e-1, phi[2] = 0.1e-1, R = 1.0, M = 1, alpha = .5, eta = 1 }:
a4 := { phi[1] = 0.1e-1, phi[2] = 0.1e-1, R = 1.0, M = 1, alpha = 1, eta = 1 }:

AllA := [a1, a2, a3, a4]:

print~(AllA):

{M = 1, R = 1.0, alpha = -1, eta = 1, phi[1] = 0.1e-1, phi[2] = 0.1e-1}

 

{M = 1, R = 1.0, alpha = -.5, eta = 1, phi[1] = 0.1e-1, phi[2] = 0.1e-1}

 

{M = 1, R = 1.0, alpha = .5, eta = 1, phi[1] = 0.1e-1, phi[2] = 0.1e-1}

 

{M = 1, R = 1.0, alpha = 1, eta = 1, phi[1] = 0.1e-1, phi[2] = 0.1e-1}

(2)

data := {
  rho[f]   = 997.1,
  rho[s1]  = 6320,
  rho[s2]  = 3970,
  c[p][f]  = 4180,
  c[p][s1] = 531.5,
  c[p][s2] = 765,
  k[s1]    = 76.5,
  k[s2]    = 40,
  k[f]     = .613,
  mu[f]   = 1,     # You forgot assigning it, this is my arbitrary choice
  k[nf]   = 1,     # You forgot assigning it, this is my arbitrary choice
  k[s1]   = 1,     # You forgot assigning it, this is my arbitrary choice
  k[s2]   = 1,     # You forgot assigning it, this is my arbitrary choice
  phi[1]  = 0.1,   # You forgot assigning it, this is my arbitrary choice
  phi[2]  = 0.1    # You forgot assigning it, this is my arbitrary choice
}:

AllData := {
  data[]
  , k[nf]    = eval( k[f]*(k[s1]+2*k[f]-2*phi[1]*(k[f]-k[s1]))/(k[s1]+2*k[f]+phi[1]*(k[f]-k[s1])), data)
  , k[hnf]   = simplify(eval( k[nf]*(k[s2]+2*k[nf]-2*phi[2]*(k[nf]-k[s2]))/(k[s2]+2*k[nf]+phi[2]*(k[nf]-k[s2])), data))
  , mu[hnf]  = eval( mu[f]/((1-phi[1])^2.5*(1-phi[2])^2.5), data)
  , rho[hnf] = eval( (1-phi[2])((1-phi[1])*rho[f]+phi[1]*rho[s1])+phi[2]*rho[s2], data)
}:

# Check:

print~(AllData):
 

k[f] = .613

 

k[hnf] = 1.000000000

 

k[nf] = 1

 

k[nf] = .6455375120

 

k[s1] = 1

 

k[s1] = 76.5

 

k[s2] = 1

 

k[s2] = 40

 

mu[f] = 1

 

mu[hnf] = 1.693508780

 

phi[1] = .1

 

phi[2] = .1

 

rho[f] = 997.1

 

rho[hnf] = 397.9

 

rho[s1] = 6320

 

rho[s2] = 3970

 

c[p][f] = 4180

 

c[p][s1] = 531.5

 

c[p][s2] = 765

(3)

AllB := [ seq(eval(eq1, AllA[i] union AllData), i=1..numelems(AllA)) ]:

print~(AllB):

4.243773825*(diff(diff(diff(diff(F(x), x), x), x), x))-5.505906007*(diff(diff(F(x), x), x))-(diff(diff(diff(F(x), x), x), x))-2.0*F(x)*(diff(diff(diff(F(x), x), x), x)) = 0

 

4.243773825*(diff(diff(diff(diff(F(x), x), x), x), x))-4.005906007*(diff(diff(F(x), x), x))-.5*(diff(diff(diff(F(x), x), x), x))-2.0*F(x)*(diff(diff(diff(F(x), x), x), x)) = 0

 

4.243773825*(diff(diff(diff(diff(F(x), x), x), x), x))-1.005906007*(diff(diff(F(x), x), x))+.5*(diff(diff(diff(F(x), x), x), x))-2.0*F(x)*(diff(diff(diff(F(x), x), x), x)) = 0

 

4.243773825*(diff(diff(diff(diff(F(x), x), x), x), x))+.494093993*(diff(diff(F(x), x), x))+diff(diff(diff(F(x), x), x), x)-2.0*F(x)*(diff(diff(diff(F(x), x), x), x)) = 0

(4)

bcs := F(-1) = -1, F(1) = 1, (D(F))(-1) = 0, (D(F))(1) = 0;

F(-1) = -1, F(1) = 1, (D(F))(-1) = 0, (D(F))(1) = 0

(5)

AllC := [ seq( dsolve({AllB[i], bcs}, numeric), i=1..numelems(AllA)) ];

AllC[1](0);

colors  := [red, gold, green, blue]:
legends := [ seq(cat("data set a", i), i=1..numelems(AllA)) ];

display(
  seq(
    odeplot(AllC[i], [x, diff(F(x), x)], -1..1, color=colors[i], legend=legends[i])
    , i=1..numelems(AllA)
  )
)

[proc (x_bvp) local res, data, solnproc, _ndsol, outpoint, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x_bvp) else outpoint := evalf(x_bvp) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(10, {(1) = -1.0, (2) = -.8345204915051194, (3) = -.613691680718111, (4) = -.3419593760168745, (5) = -0.30799685620354136e-1, (6) = .261867322088955, (7) = .49531217387834137, (8) = .6834721467651494, (9) = .8471616133630866, (10) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(10, 4, {(1, 1) = -1.0, (1, 2) = .0, (1, 3) = 3.1636830295853944, (1, 4) = -4.607032094044634, (2, 1) = -.9600083071821683, (2, 2) = .4641435042824518, (2, 3) = 2.4670081858897706, (2, 4) = -3.8449519456918044, (3, 1) = -.8038896314203525, (3, 2) = .9217743985030411, (3, 3) = 1.7046802961225183, (3, 4) = -3.1099803799278667, (4, 1) = -.5003436588990865, (4, 2) = 1.2777956453763997, (4, 3) = .93926555275606, (4, 4) = -2.5886165747900933, (5, 1) = -0.6991456323748237e-1, (5, 2) = 1.4489743289330363, (5, 3) = .1685876354270685, (5, 4) = -2.442192850610124, (6, 1) = .35099468269583234, (6, 2) = 1.3910256110120378, (6, 3) = -.5792822530856752, (6, 4) = -2.745091306679072, (7, 1) = .653851403072871, (7, 2) = 1.1762711862773043, (7, 3) = -1.2844409058641224, (7, 4) = -3.3599344632577943, (8, 1) = .8485116918581102, (8, 2) = .8707876943971833, (8, 3) = -1.9881043917473578, (8, 4) = -4.17394509227341, (9, 1) = .9611973502450049, (9, 2) = .4852860212631082, (9, 3) = -2.7494939818683, (9, 4) = -5.1808107093802835, (10, 1) = 1.0, (10, 2) = .0, (10, 3) = -3.632609179737446, (10, 4) = -6.429500616264703}, datatype = float[8], order = C_order); YP := Matrix(10, 4, {(1, 1) = .0, (1, 2) = 3.1636830295853944, (1, 3) = -4.607032094044634, (1, 4) = 5.190185528061891, (2, 1) = .4641435042824518, (2, 2) = 2.4670081858897706, (2, 3) = -3.8449519456918044, (2, 4) = 4.034271280109428, (3, 1) = .9217743985030411, (3, 2) = 1.7046802961225183, (3, 3) = -3.1099803799278667, (3, 4) = 2.657066924436565, (4, 1) = 1.2777956453763997, (4, 2) = .93926555275606, (4, 3) = -2.5886165747900933, (4, 4) = 1.2190298693244515, (5, 1) = 1.4489743289330363, (5, 2) = .1685876354270685, (5, 3) = -2.442192850610124, (5, 4) = -.2762813315156067, (6, 1) = 1.3910256110120378, (6, 2) = -.5792822530856752, (6, 3) = -2.745091306679072, (6, 4) = -1.8524997259979574, (7, 1) = 1.1762711862773043, (7, 2) = -1.2844409058641224, (7, 3) = -3.3599344632577943, (7, 4) = -3.493527624215365, (8, 1) = .8707876943971833, (8, 2) = -1.9881043917473578, (8, 3) = -4.17394509227341, (8, 4) = -5.232027988502383, (9, 1) = .4852860212631082, (9, 2) = -2.7494939818683, (9, 3) = -5.1808107093802835, (9, 4) = -7.134882875694695, (10, 1) = .0, (10, 2) = -3.632609179737446, (10, 3) = -6.429500616264703, (10, 4) = -9.25810567969981}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(10, {(1) = -1.0, (2) = -.8345204915051194, (3) = -.613691680718111, (4) = -.3419593760168745, (5) = -0.30799685620354136e-1, (6) = .261867322088955, (7) = .49531217387834137, (8) = .6834721467651494, (9) = .8471616133630866, (10) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(10, 4, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.320965229302303e-6, (1, 4) = 0.20625435773980762e-6, (2, 1) = -0.21662828660741597e-8, (2, 2) = -0.5321047471110476e-7, (2, 3) = -0.29748745205442183e-6, (2, 4) = 0.14474251093437116e-6, (3, 1) = -0.12802224185955755e-7, (3, 2) = -0.12880359685429147e-6, (3, 3) = -0.2754609284674051e-6, (3, 4) = 0.422248919810272e-7, (4, 1) = -0.2488039788282393e-7, (4, 2) = -0.24645040885322146e-6, (4, 3) = -0.2232055894767619e-6, (4, 4) = -0.16612887001043793e-6, (5, 1) = -0.30207191488881113e-8, (5, 2) = -0.31616645991050967e-6, (5, 3) = -0.8442964129401751e-7, (5, 4) = -0.33082012445115147e-6, (6, 1) = 0.17692274965987335e-7, (6, 2) = -0.21929135648323933e-6, (6, 3) = 0.7591113124113682e-7, (6, 4) = -0.16518221277806597e-6, (7, 1) = 0.8997213689790162e-8, (7, 2) = -0.14049504318983955e-6, (7, 3) = 0.15011911446779624e-6, (7, 4) = -0.3775879681945588e-8, (8, 1) = 0.4950006422490701e-9, (8, 2) = -0.8694952700639968e-7, (8, 3) = 0.19486283016094694e-6, (8, 4) = 0.10646699460348378e-6, (9, 1) = -0.233653484917027e-8, (9, 2) = -0.4145693924776069e-7, (9, 3) = 0.23275364039844293e-6, (9, 4) = 0.19144199127325873e-6, (10, 1) = .0, (10, 2) = .0, (10, 3) = 0.26202545849335726e-6, (10, 4) = 0.24531565723179697e-6}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[10] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(3.3082012445115147e-7) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [4, 10, [F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[10] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[10] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(4, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(10, 4, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(4, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(10, 4, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = yout[i], i = 1 .. 4)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[10] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(3.3082012445115147e-7) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [4, 10, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[10] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[10] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(4, {(1) = .0, (2) = .0, (3) = .0, (4) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(10, 4, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(4, {(1) = 0., (2) = 0., (3) = 0., (4) = 0.}); `dsolve/numeric/hermite`(10, 4, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 4)] end proc, (2) = Array(0..0, {}), (3) = [x, F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x_bvp) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x_bvp) else _ndsol := pointto(data[2][0]); return ('_ndsol')(x_bvp) end if end if; try res := solnproc(outpoint); [x = res[1], seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = res[i+1], i = 1 .. 4)] catch: error  end try end proc, proc (x_bvp) local res, data, solnproc, _ndsol, outpoint, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x_bvp) else outpoint := evalf(x_bvp) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(10, {(1) = -1.0, (2) = -.8230223002196657, (3) = -.6120604124702849, (4) = -.365734113634546, (5) = -0.8521083706438085e-1, (6) = .19807440722060754, (7) = .4441585008746424, (8) = .6506759302644971, (9) = .8310728926272699, (10) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(10, 4, {(1, 1) = -1.0, (1, 2) = .0, (1, 3) = 3.2024054605007, (1, 4) = -4.561772646438333, (2, 1) = -.9538821065519519, (2, 2) = .499354216305126, (2, 3) = 2.462188482329671, (2, 4) = -3.834015030700587, (3, 1) = -.7994699363427611, (3, 2) = .9386310747679936, (3, 3) = 1.7246690988739413, (3, 4) = -3.1980477350676435, (4, 1) = -.5235639084761247, (4, 2) = 1.2718031406443107, (4, 3) = .9992635168967455, (4, 4) = -2.739308864691832, (5, 1) = -.13728232826492662, (5, 2) = 1.447997749307266, (5, 3) = .26608580079925903, (5, 4) = -2.5429470673842762, (6, 1) = .27392352756220795, (6, 2) = 1.4206602755546929, (6, 3) = -.46549948973869354, (6, 4) = -2.6793461768366402, (7, 1) = .6025721387687291, (7, 2) = 1.2215183660280955, (7, 3) = -1.1701367490289056, (7, 4) = -3.0985615431983247, (8, 1) = .8251391118646613, (8, 2) = .9098931672344264, (8, 3) = -1.8688868827206906, (8, 4) = -3.7129945299859637, (9, 1) = .9550662052310327, (9, 2) = .5084512958428912, (9, 3) = -2.605114303252651, (9, 4) = -4.49032135449593, (10, 1) = 1.0, (10, 2) = .0, (10, 3) = -3.4418755414950137, (10, 4) = -5.4574567197898505}, datatype = float[8], order = C_order); YP := Matrix(10, 4, {(1, 1) = .0, (1, 2) = 3.2024054605007, (1, 3) = -4.561772646438333, (1, 4) = 4.635306934795669, (2, 1) = .499354216305126, (2, 2) = 2.462188482329671, (2, 3) = -3.834015030700587, (2, 4) = 3.596017463172271, (3, 1) = .9386310747679936, (3, 2) = 1.7246690988739413, (3, 3) = -3.1980477350676435, (3, 4) = 2.4561451443713196, (4, 1) = 1.2718031406443107, (4, 2) = .9992635168967455, (4, 3) = -2.739308864691832, (4, 4) = 1.2964187138341203, (5, 1) = 1.447997749307266, (5, 2) = .26608580079925903, (5, 3) = -2.5429470673842762, (5, 4) = .11608643215970291, (6, 1) = 1.4206602755546929, (6, 2) = -.46549948973869354, (6, 3) = -2.6793461768366402, (6, 4) = -1.1009757814453724, (7, 1) = 1.2215183660280955, (7, 2) = -1.1701367490289056, (7, 3) = -3.0985615431983247, (7, 4) = -2.349548474329587, (8, 1) = .9098931672344264, (8, 2) = -1.8688868827206906, (8, 3) = -3.7129945299859637, (8, 4) = -3.645471486112765, (9, 1) = .5084512958428912, (9, 2) = -2.605114303252651, (9, 3) = -4.49032135449593, (9, 4) = -5.009247180175052, (10, 1) = .0, (10, 2) = -3.4418755414950137, (10, 3) = -5.4574567197898505, (10, 4) = -6.463933479418131}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(10, {(1) = -1.0, (2) = -.8230223002196657, (3) = -.6120604124702849, (4) = -.365734113634546, (5) = -0.8521083706438085e-1, (6) = .19807440722060754, (7) = .4441585008746424, (8) = .6506759302644971, (9) = .8310728926272699, (10) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(10, 4, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.21795585591266545e-6, (1, 4) = 0.15859585924547324e-6, (2, 1) = -0.7382788075766052e-9, (2, 2) = -0.3484970048445586e-7, (2, 3) = -0.20310495291492214e-6, (2, 4) = 0.13757794743245046e-6, (3, 1) = -0.4824796191312689e-8, (3, 2) = -0.786371881262705e-7, (3, 3) = -0.17951856691697007e-6, (3, 4) = 0.9262522073134566e-7, (4, 1) = -0.9653802963899059e-8, (4, 2) = -0.13506031575634385e-6, (4, 3) = -0.13410901880448737e-6, (4, 4) = 0.10579088076766957e-7, (5, 1) = -0.5168842837487e-8, (5, 2) = -0.1808930499416432e-6, (5, 3) = -0.55580325882813683e-7, (5, 4) = -0.6730545231057284e-7, (6, 1) = 0.57062913913256185e-8, (6, 2) = -0.15787889363918775e-6, (6, 3) = 0.3988819587012066e-7, (6, 4) = -0.3456323983230098e-7, (7, 1) = 0.36524231994704153e-8, (7, 2) = -0.10923881948943386e-6, (7, 3) = 0.10645399214968022e-6, (7, 4) = 0.5146402980834153e-7, (8, 1) = -0.5261386113252735e-9, (8, 2) = -0.6721228628347843e-7, (8, 3) = 0.1509773553809045e-6, (8, 4) = 0.12360533872225815e-6, (9, 1) = -0.1690561041667948e-8, (9, 2) = -0.30794920851512984e-7, (9, 3) = 0.1838203466569299e-6, (9, 4) = 0.17408963220781308e-6, (10, 1) = .0, (10, 2) = .0, (10, 3) = 0.20174679478711903e-6, (10, 4) = 0.1916208597032606e-6}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[10] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(2.1795585591266545e-7) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [4, 10, [F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[10] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[10] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(4, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(10, 4, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(4, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(10, 4, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = yout[i], i = 1 .. 4)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[10] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(2.1795585591266545e-7) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [4, 10, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[10] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[10] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(4, {(1) = .0, (2) = .0, (3) = .0, (4) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(10, 4, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(4, {(1) = 0., (2) = 0., (3) = 0., (4) = 0.}); `dsolve/numeric/hermite`(10, 4, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 4)] end proc, (2) = Array(0..0, {}), (3) = [x, F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x_bvp) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x_bvp) else _ndsol := pointto(data[2][0]); return ('_ndsol')(x_bvp) end if end if; try res := solnproc(outpoint); [x = res[1], seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = res[i+1], i = 1 .. 4)] catch: error  end try end proc, proc (x_bvp) local res, data, solnproc, _ndsol, outpoint, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x_bvp) else outpoint := evalf(x_bvp) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(11, {(1) = -1.0, (2) = -.8349702453362813, (3) = -.6629989401386771, (4) = -.47695397178592847, (5) = -.271772047084955, (6) = -0.4754132124094439e-1, (7) = .1858007458755159, (8) = .41429059327121887, (9) = .6299012307002473, (10) = .827687111900952, (11) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(11, 4, {(1, 1) = -1.0, (1, 2) = .0, (1, 3) = 3.305926822008611, (1, 4) = -4.523672488554754, (2, 1) = -.9582671849373837, (2, 2) = .4864591352968459, (2, 3) = 2.6039107003814994, (2, 4) = -3.9993592087600627, (3, 1) = -.8393949741649898, (3, 2) = .8774432042162891, (3, 3) = 1.9559445568175164, (3, 4) = -3.5537943498965046, (4, 1) = -.6460071110487181, (4, 2) = 1.1821174091381894, (4, 3) = 1.3306943429352183, (4, 4) = -3.187151863442845, (5, 1) = -.3799225547985622, (5, 2) = 1.3902207781570464, (5, 3) = .707183835292867, (5, 4) = -2.911995514638119, (6, 1) = -0.5579044150654242e-1, (6, 2) = 1.4772264934892843, (6, 3) = 0.7486120014579348e-1, (6, 4) = -2.7510082082307656, (7, 1) = .28515756576090134, (7, 2) = 1.4203581008545112, (7, 3) = -.5612480171204297, (7, 4) = -2.724169791644911, (8, 1) = .5895951934544567, (8, 2) = 1.220374178925209, (8, 3) = -1.1932223381511113, (8, 4) = -2.8287988271332107, (9, 1) = .8201843814448493, (9, 2) = .8959047730799011, (9, 3) = -1.8242537511744776, (9, 4) = -3.0431398450851828, (10, 1) = .9576901660006452, (10, 2) = .4738110215978004, (10, 3) = -2.4535632213564074, (10, 4) = -3.3350595641956406, (11, 1) = 1.0, (11, 2) = .0, (11, 3) = -3.0550877141299635, (11, 4) = -3.656004771833288}, datatype = float[8], order = C_order); YP := Matrix(11, 4, {(1, 1) = .0, (1, 2) = 3.305926822008611, (1, 3) = -4.523672488554754, (1, 4) = 3.448495012654861, (2, 1) = .4864591352968459, (2, 2) = 2.6039107003814994, (2, 3) = -3.9993592087600627, (2, 4) = 2.8945648159393023, (3, 1) = .8774432042162891, (3, 2) = 1.9559445568175164, (3, 3) = -3.5537943498965046, (3, 4) = 2.28816807574519, (4, 1) = 1.1821174091381894, (4, 2) = 1.3306943429352183, (4, 3) = -3.187151863442845, (4, 4) = 1.6612513274817053, (5, 1) = 1.3902207781570464, (5, 2) = .707183835292867, (5, 3) = -2.911995514638119, (5, 4) = 1.0321058465598076, (6, 1) = 1.4772264934892843, (6, 2) = 0.7486120014579348e-1, (6, 3) = -2.7510082082307656, (6, 4) = .414199114412958, (7, 1) = 1.4203581008545112, (7, 2) = -.5612480171204297, (7, 3) = -2.724169791644911, (7, 4) = -.17816998271002774, (8, 1) = 1.220374178925209, (8, 2) = -1.1932223381511113, (8, 3) = -2.8287988271332107, (8, 4) = -.7355628778168632, (9, 1) = .8959047730799011, (9, 2) = -1.8242537511744776, (9, 3) = -3.0431398450851828, (9, 4) = -1.250144245620543, (10, 1) = .4738110215978004, (10, 2) = -2.4535632213564074, (10, 3) = -3.3350595641956406, (10, 4) = -1.6938771934039125, (11, 1) = .0, (11, 2) = -3.0550877141299635, (11, 3) = -3.656004771833288, (11, 4) = -2.0163982799684574}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(11, {(1) = -1.0, (2) = -.8349702453362813, (3) = -.6629989401386771, (4) = -.47695397178592847, (5) = -.271772047084955, (6) = -0.4754132124094439e-1, (7) = .1858007458755159, (8) = .41429059327121887, (9) = .6299012307002473, (10) = .827687111900952, (11) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(11, 4, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.9790569767920404e-7, (1, 4) = 0.112448305705116e-6, (2, 1) = 0.45844983361163896e-9, (2, 2) = -0.1094032518009447e-7, (2, 3) = -0.8955075685573662e-7, (2, 4) = 0.1191242510363102e-6, (3, 1) = 0.8009839376081181e-9, (3, 2) = -0.2360070345808789e-7, (3, 3) = -0.7338664365543241e-7, (3, 4) = 0.11390192178403137e-6, (4, 1) = 0.6876293051178672e-9, (4, 2) = -0.35999957113990896e-7, (4, 3) = -0.5141334884606263e-7, (4, 4) = 0.10156126373300032e-6, (5, 1) = 0.7037244555939593e-9, (5, 2) = -0.4632169913045516e-7, (5, 3) = -0.2399556636436062e-7, (5, 4) = 0.8670442182328977e-7, (6, 1) = 0.17494118211695317e-8, (6, 2) = -0.51600905679493496e-7, (6, 3) = 0.7897919546512352e-8, (6, 4) = 0.7578789917080854e-7, (7, 1) = 0.3147374590803252e-8, (7, 2) = -0.4857425579192532e-7, (7, 3) = 0.3987221642558589e-7, (7, 4) = 0.7437579754899402e-7, (8, 1) = 0.33146152582413634e-8, (8, 2) = -0.3828130722331125e-7, (8, 3) = 0.6626767042182201e-7, (8, 4) = 0.7959026322089725e-7, (9, 1) = 0.21983578800699434e-8, (9, 2) = -0.25371684974673274e-7, (9, 3) = 0.8406273273179104e-7, (9, 4) = 0.8317133836751885e-7, (10, 1) = 0.5437855531352124e-9, (10, 2) = -0.12802270154238087e-7, (10, 3) = 0.9379983254400154e-7, (10, 4) = 0.8062674681017602e-7, (11, 1) = .0, (11, 2) = .0, (11, 3) = 0.10052401942370861e-6, (11, 4) = 0.7587793139634221e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[11] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(1.191242510363102e-7) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [4, 11, [F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[11] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[11] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(4, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(11, 4, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(4, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(11, 4, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = yout[i], i = 1 .. 4)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[11] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(1.191242510363102e-7) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [4, 11, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[11] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[11] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(4, {(1) = .0, (2) = .0, (3) = .0, (4) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(11, 4, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(4, {(1) = 0., (2) = 0., (3) = 0., (4) = 0.}); `dsolve/numeric/hermite`(11, 4, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 4)] end proc, (2) = Array(0..0, {}), (3) = [x, F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x_bvp) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x_bvp) else _ndsol := pointto(data[2][0]); return ('_ndsol')(x_bvp) end if end if; try res := solnproc(outpoint); [x = res[1], seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = res[i+1], i = 1 .. 4)] catch: error  end try end proc, proc (x_bvp) local res, data, solnproc, _ndsol, outpoint, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x_bvp) else outpoint := evalf(x_bvp) end if; data := Array(1..4, {(1) = proc (outpoint) local X, Y, YP, yout, errproc, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; X := Vector(13, {(1) = -1.0, (2) = -.8648048849604972, (3) = -.7258144766126813, (4) = -.5806548650009224, (5) = -.4251954881870461, (6) = -.25830200663898156, (7) = -0.7906320968469074e-1, (8) = .10896859691459088, (9) = .30218845783835674, (10) = .4950993608940931, (11) = .6842045337170743, (12) = .8563830920544138, (13) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(13, 4, {(1, 1) = -1.0, (1, 2) = .0, (1, 3) = 3.373722494305436, (1, 4) = -4.540543484968664, (2, 1) = -.9709994051712143, (2, 2) = .4157529846211831, (2, 3) = 2.784924226032603, (2, 4) = -4.175384508203814, (3, 1) = -.8881431843504255, (3, 2) = .7636161458832533, (3, 3) = 2.2284237467793426, (3, 4) = -3.8397480759739473, (4, 1) = -.7557361304421567, (4, 2) = 1.047742309074612, (4, 3) = 1.6935372508295938, (4, 4) = -3.5384993911508076, (5, 1) = -.57456181187085, (5, 2) = 1.2693883369188317, (5, 3) = 1.1648387824551296, (5, 4) = -3.2729827638861617, (6, 1) = -.3489758737997563, (6, 2) = 1.4193148302520373, (6, 3) = .6380114908991168, (6, 4) = -3.050802164777067, (7, 1) = -0.8721290290439132e-1, (7, 2) = 1.4856754446728115, (7, 3) = .10760443033540439, (7, 4) = -2.8784616899570166, (8, 1) = .1908914101879065, (8, 2) = 1.4557957427238546, (8, 3) = -.4218076470447148, (8, 4) = -2.7630465319931523, (9, 1) = .4610068956882461, (9, 2) = 1.3231672424400462, (9, 3) = -.9491453862557799, (9, 4) = -2.704760635382748, (10, 1) = .6953692349713777, (10, 2) = 1.0898540289713925, (10, 3) = -1.4695029587825694, (10, 4) = -2.697678065088815, (11, 1) = .8721442840050412, (11, 2) = .7635868911696608, (11, 3) = -1.9821500585914997, (11, 4) = -2.7295310300633284, (12, 1) = .9719047540926605, (12, 2) = .38161022893967533, (12, 3) = -2.456305521844615, (12, 4) = -2.780622799851062, (13, 1) = 1.0, (13, 2) = .0, (13, 3) = -2.8591443331860087, (13, 4) = -2.829325237274913}, datatype = float[8], order = C_order); YP := Matrix(13, 4, {(1, 1) = .0, (1, 2) = 3.373722494305436, (1, 3) = -4.540543484968664, (1, 4) = 2.8169961287747656, (2, 1) = .4157529846211831, (2, 2) = 2.784924226032603, (2, 3) = -4.175384508203814, (2, 4) = 2.5703447861797697, (3, 1) = .7636161458832533, (3, 2) = 2.2284237467793426, (3, 3) = -3.8397480759739473, (3, 4) = 2.252520951780353, (4, 1) = 1.047742309074612, (4, 2) = 1.6935372508295938, (4, 3) = -3.5384993911508076, (4, 4) = 1.8969145895692585, (5, 1) = 1.2693883369188317, (5, 2) = 1.1648387824551296, (5, 3) = -3.2729827638861617, (5, 4) = 1.5218776963785599, (6, 1) = 1.4193148302520373, (6, 2) = .6380114908991168, (6, 3) = -3.050802164777067, (6, 4) = 1.1463563853206438, (7, 1) = 1.4856754446728115, (7, 2) = .10760443033540439, (7, 3) = -2.8784616899570166, (7, 4) = .784059925028772, (8, 1) = 1.4557957427238546, (8, 2) = -.4218076470447148, (8, 3) = -2.7630465319931523, (8, 4) = .4516205476114067, (9, 1) = 1.3231672424400462, (9, 2) = -.9491453862557799, (9, 3) = -2.704760635382748, (9, 4) = .16021142715357983, (10, 1) = 1.0898540289713925, (10, 2) = -1.4695029587825694, (10, 3) = -2.697678065088815, (10, 4) = -0.7729300109926096e-1, (11, 1) = .7635868911696608, (11, 2) = -1.9821500585914997, (11, 3) = -2.7295310300633284, (11, 4) = -.24793741323626228, (12, 1) = .38161022893967533, (12, 2) = -2.456305521844615, (12, 3) = -2.780622799851062, (12, 4) = -.33242403861147385, (13, 1) = .0, (13, 2) = -2.8591443331860087, (13, 3) = -2.829325237274913, (13, 4) = -.3338159043213642}, datatype = float[8], order = C_order); errproc := proc (x_bvp) local outpoint, X, Y, yout, L, V, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := 15; outpoint := evalf(x_bvp); X := Vector(13, {(1) = -1.0, (2) = -.8648048849604972, (3) = -.7258144766126813, (4) = -.5806548650009224, (5) = -.4251954881870461, (6) = -.25830200663898156, (7) = -0.7906320968469074e-1, (8) = .10896859691459088, (9) = .30218845783835674, (10) = .4950993608940931, (11) = .6842045337170743, (12) = .8563830920544138, (13) = 1.0}, datatype = float[8], order = C_order); Y := Matrix(13, 4, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.3415082014380156e-7, (1, 4) = 0.48382845169449726e-7, (2, 1) = 0.27985988830463634e-9, (2, 2) = -0.29747826355335317e-8, (2, 3) = -0.3095389907332211e-7, (2, 4) = 0.5147221467081313e-7, (3, 1) = 0.5634000429010082e-9, (3, 2) = -0.6211191988774322e-8, (3, 3) = -0.25930801472913458e-7, (3, 4) = 0.5154159579146692e-7, (4, 1) = 0.7626915129413819e-9, (4, 2) = -0.9346779650031032e-8, (4, 3) = -0.19466852860884187e-7, (4, 4) = 0.49264545198076486e-7, (5, 1) = 0.9192783248897028e-9, (5, 2) = -0.12057649486810488e-7, (5, 3) = -0.11869291988131077e-7, (5, 4) = 0.4550569117408885e-7, (6, 1) = 0.11235020840583405e-8, (6, 2) = -0.14047846787318742e-7, (6, 3) = -0.3354285736686311e-8, (6, 4) = 0.4099263112608454e-7, (7, 1) = 0.14812479427117337e-8, (7, 2) = -0.1499312754963664e-7, (7, 3) = 0.5692827186509835e-8, (7, 4) = 0.3658035870208618e-7, (8, 1) = 0.18709366046929603e-8, (8, 2) = -0.1462195147457879e-7, (8, 3) = 0.144873707517166e-7, (8, 4) = 0.32954590048008254e-7, (9, 1) = 0.20523163456542436e-8, (9, 2) = -0.12985898887961813e-7, (9, 3) = 0.22089109706539154e-7, (9, 4) = 0.3014074072119169e-7, (10, 1) = 0.1742172910215283e-8, (10, 2) = -0.10486608719607884e-7, (10, 3) = 0.2771055675320638e-7, (10, 4) = 0.27458856045370038e-7, (11, 1) = 0.8783277962319171e-9, (11, 2) = -0.765167083971309e-8, (11, 3) = 0.3113401515282755e-7, (11, 4) = 0.2425696806134047e-7, (12, 1) = 0.10072978358224701e-9, (12, 2) = -0.41105690627636155e-8, (12, 3) = 0.33450107039721626e-7, (12, 4) = 0.21040741295422602e-7, (13, 1) = .0, (13, 2) = .0, (13, 3) = 0.35515395588326785e-7, (13, 4) = 0.18772939557195428e-7}, datatype = float[8], order = C_order); if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "right" then return X[13] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(5.154159579146692e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [4, 13, [F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[13] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[13] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(4, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(13, 4, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(4, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(13, 4, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = yout[i], i = 1 .. 4)] end proc; if not type(outpoint, 'numeric') then if outpoint = "start" or outpoint = "left" then return X[1] elif outpoint = "method" then return "bvp" elif outpoint = "right" then return X[13] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(5.154159579146692e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [4, 13, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[13] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[13] end if; if Digits <= trunc(evalhf(Digits)) and (_EnvInFsolve <> true or _EnvDSNumericSaveDigits <= trunc(evalhf(Digits))) then V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = .0, (1, 2) = .0, (2, 1) = .0, (2, 2) = .0, (3, 1) = .0, (3, 2) = .0, (4, 1) = .0, (4, 2) = .0, (5, 1) = .0, (5, 2) = .0, (6, 1) = .0, (6, 2) = .0, (7, 1) = .0, (7, 2) = .0}, datatype = float[8], order = C_order); yout := Vector(4, {(1) = .0, (2) = .0, (3) = .0, (4) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(13, 4, X, Y, YP, outpoint, var(yout), var(L), var(V))) else if _EnvInFsolve = true then Digits := _EnvDSNumericSaveDigits end if; V := array( 1 .. 6, [( 1 ) = (7), ( 2 ) = (0), ( 3 ) = (false), ( 4 ) = (false), ( 5 ) = (false), ( 6 ) = (false)  ] ); L := Matrix(7, 2, {(1, 1) = 0., (1, 2) = 0., (2, 1) = 0., (2, 2) = 0., (3, 1) = 0., (3, 2) = 0., (4, 1) = 0., (4, 2) = 0., (5, 1) = 0., (5, 2) = 0., (6, 1) = 0., (6, 2) = 0., (7, 1) = 0., (7, 2) = 0.}, order = C_order); yout := Vector(4, {(1) = 0., (2) = 0., (3) = 0., (4) = 0.}); `dsolve/numeric/hermite`(13, 4, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 4)] end proc, (2) = Array(0..0, {}), (3) = [x, F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)], (4) = 0}); solnproc := data[1]; if not type(outpoint, 'numeric') then if outpoint = "solnprocedure" then return eval(solnproc) elif member(outpoint, ["start", "left", "right", "errorproc", "rawdata", "order", "error"]) then return solnproc(x_bvp) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x_bvp) else _ndsol := pointto(data[2][0]); return ('_ndsol')(x_bvp) end if end if; try res := solnproc(outpoint); [x = res[1], seq('[F(x), diff(F(x), x), diff(diff(F(x), x), x), diff(diff(diff(F(x), x), x), x)]'[i] = res[i+1], i = 1 .. 4)] catch: error  end try end proc]

 

[x = 0., F(x) = HFloat(-0.02521855623397279), diff(F(x), x) = HFloat(1.4530068811004437), diff(diff(F(x), x), x) = HFloat(0.09321390760388122), diff(diff(diff(F(x), x), x), x) = HFloat(-2.453032561333428)]

 

["data set a1", "data set a2", "data set a3", "data set a4"]

 

 

 

 

Download eq1_only.mw

First 36 37 38 39 40 41 42 Last Page 38 of 154