Rouben Rostamian

MaplePrimes Activity


These are replies submitted by Rouben Rostamian

M(something) denotes a function M applied to "something".  To express M multiplied by something, leave a space after M.

@tomleslie I agree with you that it would probably be faster to write Maple code from scratch.

But the obvious question is, why bother?  The equation may be solved immediately with Maple's dsolve():

restart;
de := diff(u(x),x,x) + u(x)*diff(u(x),x) - u(x) = exp(2*x);
bc := u(0)=exp(0), u(1)=exp(1);
dsol := dsolve({de,bc}, numeric);
plots:-odeplot(dsol, view=0..3);

 

@torabi I have shown that the trivial solution is the only possible one, and I did not use Maple.  It's just simple mathematics, independent of Maple.  If some papers propose a nontrivial solution, then either they are misinformed or they are attempting a different problem than the one that you have described.

 

 

@herclau In the Stackexchange link that you have cited we read: To make the distribution even, I rotated the lines for a specific angle ranging from 0 < h < 2 π.

In other words, the angle between the radii was taken to be constant.

But it could have equally well said: To make the distribution even, I picked equally spaced points around the ellipse.

Those two choices lead to different results. That's what everyone has been trying to tell you.

You will have to think about what the purpose of your calculation is, and then apply the proper procedure to obtain an answer that makes sense in its context.

 

The idea of "the arithmetic mean" in this setting is ill-defined.  Let t be the angle that the radius makes with respect to the x axis, and let s be the arc length measured along the ellipse.

The length L of the radius may be expressed as a function of t or s.  If L is viewed as a function of t, for example, then the arithmetic mean would be 1/(t2-t1)*int(L(t), t=t1..t2).  On the other hand, if L is viewed as a function or s, then the arithmetic mean would be 1/(s2-s1)*int(L(s), s=s1..s2), which is something quite different.

L also may be viewed as a function of x, or y, where (x,y) is the coordinates of the tip of the radius.  You can think of other variables that can serve to parametrize L.  There is a different "arithmetic mean" corresponding to each choice.

 

Although you don't state this explicitly in your worksheet, it is clear that the intention is to solve the partial differential equation of a vibrating Euler's beam through separation of variables.  It is also clear that ω2 is the separation constant that arises in the process.

Things go wrong when you assign a value to ω2, that is, where you set ω2=a2 c. Where does that come from?

To fix, go over the process of separating the variables carefully.  Additionally, examine the physical assumptions that lead to the mathematical model.  Specifically, the motion of the beam certainly depends on how you get the motion started.  At no place in your worksheet you have said how the motion gets started.  Look up the term "initial condition" in your reference book.

 

@jefryyhalim I don't know how to compute the next eigenvalue but I doubt that it would be useful.  Generalizing from the 1-D model, the higher eigenvalues and their associated buckled shapes are likely to correspond to unstable equilibria and therefore you would not see them in experiments.

If your actual experiments show wrinkled shapes, then perhaps your mathematical model is at fault.  As I have said earlier, a plate is inherently a 2-D object and the proper model for its deformation is a partial differential equation (PDE).  I have no idea how you go from there to your system of ordinary differential equations (ODEs).  If I were to investigate the source of the mismatch between computations and experiment, I would start with a close examination of the derivation of the mathematical model.

 

@jefryyhalim As Carl has correctly pointed out, my suggestion for the midway-point condition V1p(L/2)=1 is not tenable.  (Such a condition works with symbolic solutions, but not with numeric.)  An alternative is to specify a condition at an end point, such as D(V1p)(0)=1.  You need to decide which of the dependent varaibles is suited for such an assumption.  The numerical value (=1 in this case) is immaterial as long as it is nonzero.  You will get the same eigenvalue sigma regardless of that value.

The following simple illustration may be of some help.  The numerical solver picks the a=1 eigenvalue.  (Actually this problem has infinitely many eigenvalues.)

restart;

de := diff(y(x),x,x) + a*y(x) = 0;

diff(diff(y(x), x), x)+a*y(x) = 0

bc := y(0)=0, y(Pi)=0, D(y)(0)=2;  # "2" can be any nonzero number   

y(0) = 0, y(Pi) = 0, (D(y))(0) = 2

dsol := dsolve({de,bc}, numeric, output=listprocedure);

[x = proc (x) local _res, _dat, _solnproc; option `Copyright (c) 1993 by the University of Waterloo. All rights reserved.`; _dat := 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] 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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] 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(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, 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(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (4) = 0}); _solnproc := _dat[1]; if member(x, ["last", 'last']) then _res := _solnproc("last"); if type(_res, 'list') then return _res[1] end if elif type(x, `=`) and member(lhs(x), ["initial", 'initial']) then if type(rhs(x), 'list') then _res := _solnproc("initial" = [0, op(rhs(x))]) else _res := _solnproc("initial" = [1, rhs(x)]) end if; if type(_res, 'list') then return _res[1] end if elif x = "sysvars" then return _dat[3] end if; x end proc, y(x) = proc (x) local res, data, solnproc, `y(x)`, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] 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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] 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(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, 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(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (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) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else `y(x)` := pointto(data[2][2]); return ('`y(x)`')(x) end if end if; try res := solnproc(outpoint); res[2] catch: error  end try end proc, diff(y(x), x) = proc (x) local res, data, solnproc, `diff(y(x),x)`, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] 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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] 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(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, 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(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (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) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else `diff(y(x),x)` := pointto(data[2][3]); return ('`diff(y(x),x)`')(x) end if end if; try res := solnproc(outpoint); res[3] catch: error  end try end proc, a = proc (x) local res, data, solnproc, a, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] 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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] 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(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, 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(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (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) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else a := pointto(data[2][4]); return ('a')(x) end if end if; try res := solnproc(outpoint); res[4] catch: error  end try end proc]

Y := eval(y(x), dsol);

proc (x) local res, data, solnproc, `y(x)`, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] 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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] 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(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, 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(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (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) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else `y(x)` := pointto(data[2][2]); return ('`y(x)`')(x) end if end if; try res := solnproc(outpoint); res[2] catch: error  end try end proc

A := eval(a, dsol);

proc (x) local res, data, solnproc, a, outpoint; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 15; if _EnvInFsolve = true then outpoint := evalf[_EnvDSNumericSaveDigits](x) else outpoint := evalf(x) 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = 2.0, (1, 3) = 1.000000047004147, (2, 1) = .5632165075382697, (2, 2) = 1.9190589270059564, (2, 3) = 1.000000047004147, (3, 1) = 1.0821029891349827, (3, 2) = 1.6819789296307908, (3, 3) = 1.000000047004147, (4, 1) = 1.512601360669747, (4, 2) = 1.3084483640515898, (4, 3) = 1.000000047004147, (5, 1) = 1.8198844189799297, (5, 2) = .8294701310035484, (5, 3) = 1.000000047004147, (6, 1) = 1.9797229951080126, (6, 2) = .28407192525759983, (6, 3) = 1.000000047004147, (7, 1) = 1.979722995108009, (7, 2) = -.2840719252576249, (7, 3) = 1.000000047004147, (8, 1) = 1.8198844189799201, (8, 2) = -.8294701310035693, (8, 3) = 1.000000047004147, (9, 1) = 1.5126013606697146, (9, 2) = -1.3084483640516273, (9, 3) = 1.000000047004147, (10, 1) = 1.0821029891349383, (10, 2) = -1.6819789296308194, (10, 3) = 1.000000047004147, (11, 1) = .563216507538213, (11, 2) = -1.9190589270059732, (11, 3) = 1.000000047004147, (12, 1) = .0, (12, 2) = -2.0, (12, 3) = 1.000000047004147}, datatype = float[8], order = C_order); YP := Matrix(12, 3, {(1, 1) = 2.0, (1, 2) = -.0, (1, 3) = .0, (2, 1) = 1.9190589270059564, (2, 2) = -.5632165340117812, (2, 3) = .0, (3, 1) = 1.6819789296307908, (3, 2) = -1.0821030399983107, (3, 3) = .0, (4, 1) = 1.3084483640515898, (4, 2) = -1.5126014317682839, (4, 3) = .0, (5, 1) = .8294701310035484, (5, 2) = -1.8198845045220444, (5, 3) = .0, (6, 1) = .28407192525759983, (6, 2) = -1.9797230881632033, (6, 3) = .0, (7, 1) = -.2840719252576249, (7, 2) = -1.9797230881631998, (7, 3) = .0, (8, 1) = -.8294701310035693, (8, 2) = -1.8198845045220349, (8, 3) = .0, (9, 1) = -1.3084483640516273, (9, 2) = -1.5126014317682515, (9, 3) = .0, (10, 1) = -1.6819789296308194, (10, 2) = -1.0821030399982663, (10, 3) = .0, (11, 1) = -1.9190589270059732, (11, 2) = -.5632165340117244, (11, 3) = .0, (12, 1) = -2.0, (12, 2) = -.0, (12, 3) = .0}, 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(12, {(1) = .0, (2) = .2854697839639028, (3) = .5716869140590551, (4) = .8576399682948581, (5) = 1.1431446984501143, (6) = 1.4282783984068121, (7) = 1.7133142551830007, (8) = 1.9984479551396972, (9) = 2.283952685294967, (10) = 2.5699057395307716, (11) = 2.856122869625927, (12) = 3.1415926535898}, datatype = float[8], order = C_order); Y := Matrix(12, 3, {(1, 1) = .0, (1, 2) = .0, (1, 3) = -0.4703383008422516e-7, (2, 1) = 0.27897315929317813e-9, (2, 2) = 0.2446203143649674e-12, (2, 3) = -0.4703383008422516e-7, (3, 1) = 0.5492851275585263e-9, (3, 2) = -0.1611040329481231e-11, (3, 3) = -0.4703383008422516e-7, (4, 1) = 0.7672502368736449e-9, (4, 2) = -0.3836837816343793e-11, (4, 3) = -0.4703383008422516e-7, (5, 1) = 0.9160198947078643e-9, (5, 2) = -0.3994484080689554e-11, (5, 3) = -0.4703383008422516e-7, (6, 1) = 0.9906530258627258e-9, (6, 2) = -0.16167198311477401e-11, (6, 3) = -0.4703383008422516e-7, (7, 1) = 0.9906530258627258e-9, (7, 2) = 0.16171830229009114e-11, (7, 3) = -0.4703383008422516e-7, (8, 1) = 0.9160204919792234e-9, (8, 2) = 0.3995586315024278e-11, (8, 3) = -0.4703383008422516e-7, (9, 1) = 0.7672500099627146e-9, (9, 2) = 0.3835888733577452e-11, (9, 3) = -0.4703383008422516e-7, (10, 1) = 0.549285188177754e-9, (10, 2) = 0.16109158905706954e-11, (10, 3) = -0.4703383008422516e-7, (11, 1) = 0.27897380660131725e-9, (11, 2) = -0.24402293212529904e-12, (11, 3) = -0.4703383008422516e-7, (12, 1) = .0, (12, 2) = .0, (12, 3) = -0.4703383008422516e-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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then error "this is already the error procedure" elif outpoint = "rawdata" then return [3, 12, [y(x), diff(y(x), x), a], X, Y] else return ('procname')(x_bvp) end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] end if; V := array([1 = 4, 2 = 0]); if Digits <= trunc(evalhf(Digits)) then L := Vector(4, 'datatype' = 'float'[8]); yout := Vector(3, 'datatype' = 'float'[8]); evalhf(`dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, var(yout), var(L), var(V))) else L := Vector(4, 'datatype' = 'sfloat'); yout := Vector(3, 'datatype' = 'sfloat'); `dsolve/numeric/lagrange`(12, 3, X, Y, outpoint, yout, L, V) end if; [x = outpoint, seq('[y(x), diff(y(x), x), a]'[i] = yout[i], i = 1 .. 3)] 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[12] elif outpoint = "order" then return 6 elif outpoint = "error" then return HFloat(4.703383008422516e-8) elif outpoint = "errorproc" then return eval(errproc) elif outpoint = "rawdata" then return [3, 12, "depnames", X, Y, YP] else error "non-numeric value" end if end if; if outpoint < X[1] or X[12] < outpoint then error "solution is only defined in the range %1..%2", X[1], X[12] 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(3, {(1) = .0, (2) = .0, (3) = .0}, datatype = float[8]); evalhf(`dsolve/numeric/hermite`(12, 3, 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(3, {(1) = 0., (2) = 0., (3) = 0.}); `dsolve/numeric/hermite`(12, 3, X, Y, YP, outpoint, yout, L, V) end if; [outpoint, seq(yout[i], i = 1 .. 3)] end proc, (2) = Array(1..4, {(1) = 18446883910565447918, (2) = 18446883910565448358, (3) = 18446883910565448534, (4) = 18446883910565448710}), (3) = [x, y(x), diff(y(x), x), a], (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) elif outpoint = "sysvars" then return data[3] elif procname <> unknown then return ('procname')(x) else a := pointto(data[2][4]); return ('a')(x) end if end if; try res := solnproc(outpoint); res[4] catch: error  end try end proc

plot([Y(x),A(x)], x=0..Pi, color=[blue,red], legend=[y(x),a]);


 

Download zz.mw

@jefryyhalim I see what you are attempting to do.  In your worksheet Longitudinal_ODE.mw you have a system of 5 fourth order differential equations and 20 boundary conditions.  All of these are linear and homogeneous.  Clearly there is a trivial solution consisting of all zeros.  (This was pointed out by mmcdara.)  Furthermore, from your original worksheet SP1JH1B1.mw I gather that you wish to introduce a parameter, sigma, into the coefficients of your system, and then you wish to determine sigma so that the system has a nontrivial solution.

I don't know the physical meanings of your variables Vlp1, Vup1, etc., but you know what they mean, and probably you can guess what a buckled configuration should look like.  Let's say that you expect that the solution Vp1(x) [you pick the right one] to be something like an arch, that is, zero at the endpoints and nonzero in between.  Then add an extra condition, V1p(L/2)=1 to your existing 20 conditions.  Then solve your system of differential equations together with the 21 conditions numerically, for the six unknowns consisting of your original five, plus the sigma, as in:
dsol := dsolve(
        { the five DEs } union {the 21 conditions},
        { Vup1(x),Vp1(x),Vp2(x),Vlp1(x),Vlp2(x), sigma },
        numeric, output=listprocedure);

If this succeeds, then sigma will be the desired buckling load.

Good luck!

 

@jefryyhalim I don't quite understand your mathematical model.  The buckling and deformation of a plate are customarily modeled as partial differential equations with x and y coordinates denoting the position on the plate.  Your equations are ordinary differential equations in terms of a single independent variable x.  Where is the plate's y coordinate in your model?

Question: To analyze the buckling, you need to specify boundary conditions all around the plate.  That involves both the x and y coordinates. What are the plate's boundary conditions?

Suggestion 1:  Before analyzing the buckling of  a plate, I suggest that you do the much simpler problem of buckling of a beam. Do you know how to do that?

Suggestion 2: The very last command in your Longitudinal_ODE.mw is:

sol_L:=evalf(value(dsolve(...)));

That composition of three commands obscures the ensuing error message since it is unclear which of the three commands has led to it.  Don't compound commands. Execute them one at a time to ensure the success of one before applying the next.  Thus, we begin with the innermost command:

dsolve(...);

and we immediately see that it returns nothing, indicating that there is something wrong with your system of differential equations.

 

@jefryyhalim Here is how one solves a differential equation along with initial conditions in Maple:

de := diff(y(x),x,x) + 9*y(x) = 0;
ic := y(0)=1, D(y)(0)=2;
dsolve({de,ic});

This yields:

                  y(x) = 2*sin(3*x)*(1/3)+cos(3*x)

This is illustrated in the very first example of Maple's help page on dsolve(). You should read that page.

You say you need the coefficients in order to form a matrix and then calculate eigenvalues.  That strikes me as a roundabout way of achieving something that may be doable in a shorter way.  If you explain your overall goal (rather than the steps toward it) someone may be able to offer constructive advice.

Another remark: In several places in your worksheet you have constructs similar to

f(x) := x^2;

That doesn't do what you want.  To see the problem, do f(7).  Do you get 49?  No!

To correct way is:

f := x -> x^2;

Try f(7) now.

 

 

I looked over your worksheet but couldn't make heads or tails of it.  If possible, just write down the complete set of your differential equations and boundary conditions clearly as plain mathematics (no Maple calculation).  Then someone here should be able to help you code that in Maple.

One observation: In your approach to solving a differential equation, you obtain the general solution first, and then apply the initial/boundary conditions in order to determine the integration constants.  Maple is capable of doing those two steps together.  Doing so will simplify your calculations significantly.

 

 

 

@Carl Love What you have written is correct, however it doesn't address the original poster's question who is asking why the limit of the difference quotient yields zero rather than 3.  I don't have a good explanation.  Is it perhaps due to a bug in Maple's limit()?

What you have shown looks good.  I suspect that the error is due to something else that you have not shown.

Consider posting your entire worksheet.  For that, click on the big fat green arrow which appears in the window where you type your message to MaplePrimes.

First 47 48 49 50 51 52 53 Last Page 49 of 91