Question: Uval the derivation from pdsolve

Hello,

I have this problem with pdsolve , I need to know the value of dTf(x,y)/dy, but I knew just the value of Tf 

Pleas find attached the code


 

restart

with(plots); with(ExcelTools); with(Student[Calculus1])

restart

eq := diff(Tf(x, y), x) = diff(Tf(x, y), y, y):

Cl := {1 = Tf(0, y), (D[2](Tf))(x, 0) = 1, (D[2](Tf))(x, 1) = 1};

{1 = Tf(0, y), (D[2](Tf))(x, 0) = 1, (D[2](Tf))(x, 1) = 1}

(1)

pds := pdsolve(eq, Cl, numeric);

_m191894592

(2)

pp := pds:-value(x = 2, output = listprocedure);

[x = 2., y = proc (y) option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; evalf(y) end proc, Tf(x, y) = proc (y) local res, solnproc, outpoint, ndsol; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := trunc(evalhf(Digits)); outpoint := evalf(y); solnproc := proc (outpoint) local indepvals, depvals, vary, ndep, i; option `Copyright (c) 2001 by Waterloo Maple Inc. All rights reserved.`; table( [( "soln_procedures" ) = array( 1 .. 1, [( 1 ) = (18446744073902277486)  ] ) ] ) indepvals := Vector(21, {(1) = .0, (2) = 0.5e-1, (3) = .1, (4) = .15, (5) = .2, (6) = .25, (7) = .3, (8) = .35, (9) = .4, (10) = .45, (11) = .5, (12) = .55, (13) = .6, (14) = .65, (15) = .7, (16) = .75, (17) = .8, (18) = .85, (19) = .9, (20) = .95, (21) = 1.0}, datatype = float[8]); if outpoint = "left" then return indepvals[1] elif outpoint = "right" then return indepvals[21] elif outpoint = "start" then return HFloat(0.0) elif not type(outpoint, 'numeric') then error "non-numeric input" end if; if outpoint < indepvals[1] or indepvals[21] < outpoint then error "requested %1 value must be in the range %2..%3", y, indepvals[1], indepvals[21] end if; depvals := Matrix(21, 1, {(1, 1) = .4999930801471113, (2, 1) = .5499968318884445, (3, 1) = .6000080871124441, (4, 1) = .6499977374209617, (5, 1) = .6999980446183738, (6, 1) = .7500003281451354, (7, 1) = .8000006534468979, (8, 1) = .850000137731867, (9, 1) = .8999998355209465, (10, 1) = .9499998529282891, (11, 1) = .9999999999999913, (12, 1) = 1.0500001470716935, (13, 1) = 1.1000001644790365, (14, 1) = 1.149999862268117, (15, 1) = 1.1999993465530858, (16, 1) = 1.2499996718548485, (17, 1) = 1.3000019553816105, (18, 1) = 1.3500022625790227, (19, 1) = 1.3999919128875402, (20, 1) = 1.4500031681115404, (21, 1) = 1.500006919852874}, datatype = float[8], order = C_order); vary := Vector(2, {(1) = .0, (2) = -0.5e-1}, datatype = float[8]); ndep := 1; if vary[ndep+1]-outpoint <> 0. then `pdsolve/interp1dto0d`(21, indepvals, 1, depvals, false, outpoint, vary); vary[ndep+1] := outpoint end if; [seq(vary[i], i = 1 .. ndep)] end proc; if not type(outpoint, 'numeric') then if member(outpoint, ["start", "left", "right"]) then return solnproc(y) elif outpoint = "solnprocedure" then return eval(solnproc) elif procname <> unknown then return ('procname')(y) else ndsol := pointto(solnproc("soln_procedures")[1]); return ('ndsol')(y) end if end if; try res := solnproc(outpoint); res[1] catch: error  end try end proc]

(3)

``

rhs(op(3, pp))

proc (y) local res, solnproc, outpoint, ndsol; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; Digits := trunc(evalhf(Digits)); outpoint := evalf(y); solnproc := proc (outpoint) local indepvals, depvals, vary, ndep, i; option `Copyright (c) 2001 by Waterloo Maple Inc. All rights reserved.`; table( [( "soln_procedures" ) = array( 1 .. 1, [( 1 ) = (18446744073902277486)  ] ) ] ) indepvals := Vector(21, {(1) = .0, (2) = 0.5e-1, (3) = .1, (4) = .15, (5) = .2, (6) = .25, (7) = .3, (8) = .35, (9) = .4, (10) = .45, (11) = .5, (12) = .55, (13) = .6, (14) = .65, (15) = .7, (16) = .75, (17) = .8, (18) = .85, (19) = .9, (20) = .95, (21) = 1.0}, datatype = float[8]); if outpoint = "left" then return indepvals[1] elif outpoint = "right" then return indepvals[21] elif outpoint = "start" then return HFloat(0.0) elif not type(outpoint, 'numeric') then error "non-numeric input" end if; if outpoint < indepvals[1] or indepvals[21] < outpoint then error "requested %1 value must be in the range %2..%3", y, indepvals[1], indepvals[21] end if; depvals := Matrix(21, 1, {(1, 1) = .4999930801471113, (2, 1) = .5499968318884445, (3, 1) = .6000080871124441, (4, 1) = .6499977374209617, (5, 1) = .6999980446183738, (6, 1) = .7500003281451354, (7, 1) = .8000006534468979, (8, 1) = .850000137731867, (9, 1) = .8999998355209465, (10, 1) = .9499998529282891, (11, 1) = .9999999999999913, (12, 1) = 1.0500001470716935, (13, 1) = 1.1000001644790365, (14, 1) = 1.149999862268117, (15, 1) = 1.1999993465530858, (16, 1) = 1.2499996718548485, (17, 1) = 1.3000019553816105, (18, 1) = 1.3500022625790227, (19, 1) = 1.3999919128875402, (20, 1) = 1.4500031681115404, (21, 1) = 1.500006919852874}, datatype = float[8], order = C_order); vary := Vector(2, {(1) = .0, (2) = -0.5e-1}, datatype = float[8]); ndep := 1; if vary[ndep+1]-outpoint <> 0. then `pdsolve/interp1dto0d`(21, indepvals, 1, depvals, false, outpoint, vary); vary[ndep+1] := outpoint end if; [seq(vary[i], i = 1 .. ndep)] end proc; if not type(outpoint, 'numeric') then if member(outpoint, ["start", "left", "right"]) then return solnproc(y) elif outpoint = "solnprocedure" then return eval(solnproc) elif procname <> unknown then return ('procname')(y) else ndsol := pointto(solnproc("soln_procedures")[1]); return ('ndsol')(y) end if end if; try res := solnproc(outpoint); res[1] catch: error  end try end proc

(4)


Thank you

Download mapleprime.mw

Please Wait...