rahinui

110 Reputation

6 Badges

6 years, 203 days

MaplePrimes Activity


These are questions asked by rahinui

If I try to use unapply on a composition of functions, I seem to get the result in one of two forms:

unapply(f(g(x)),x);
# Result: f@(x -> g(x))
unapply(2*f(g(x)),x);
# Result: x -> 2 f(g(x))

I need the second form (without the @ composition operator): is there any way to instruct Maple to output the first result without the @ sign? Or is there some way to convert the first form to the second form (i.e. x -> f(g(x)))?

Thanks!

Hello,

     I'm attempting to use unevaluation quotes on a keyword argument within a procedure. For instance, if I have two procedures with the same keyword arguments, I need to unevaluate one to call the other:

foo1 := proc( {param:={}}, $)
  foo2('param'=param):
end proc:


foo2 := proc( {param:={}}, $)
end proc:

foo1('param'=1);

The above code throws the error,

Error, (in foo1) invalid input: too many and/or wrong type of arguments passed to foo2; first unused argument is 1 = 1

which I take to mean that 'param' in foo1 isn't being unevaluated in the call to foo2. What is the correct way to accomplish this?

Thanks!

I'm trying to solve a system of nonlinear differential equations. As a minimal working example, Maple is able to solve this just fine:

restart:

pde_sys :={diff(A(t1),t1)*cos(B(t1)) = 0, diff(A(t1),t1)*sin(B(t1)) = 0}:
solving_vars := {A(t1), B(t1)}:

dsolve(pde_sys, solving_vars);

This returns [{A(t1) = _C1}, {B(t1) = B(t1)}], as expected.

However, when simply adding an arbitrary dependence on a second variable, no solution is generated

restart:

pde_sys :={diff(A(t1,t2),t1)*cos(B(t1,t2)) = 0, diff(A(t1,t2),t1)*sin(B(t1,t2)) = 0}:
solving_vars := {A(t1,t2), B(t1,t2)}:

dsolve(pde_sys, solving_vars);

Of course, this has a solution: [{A(t1,t2) = _F1(t2)}, {B(t1) = B(t1,t2)}].

Using printlevel to debug, it seems the behavior diverges when dsolve attempts to call type/ODEtools/F(x). The univariate case correctly determines that A(t1) is of the type F(x); then, these functions are correctly passed to PDEtools/assign and execution continues nominally.

For the multivariate case, A(t1,t2) is not recognized as type F(x), so no functions are passed to PDEtools/assign and execution is dominated by null sets.

Is there something I'm missing here? Or is there another way to approach this problem?

Thanks!

I'm attempting to solve the complex-valued differential equation

restart:
assume(t::real):

pde := diff(A(t),t) - I * conjugate(A(t))*A(t)^2 = 0:
dsolve(pde);

However, it seems Maple attempts to solve it using separation of variables and gives

t-Intat(-I/conjugate(_a)/_a^2,_a = A(t))+_C1 = 0

Unless I'm mistaken, a complex integral such as this isn't even defined without a contour.

Working the integral out by hand, I know the solution to be

_C1*exp(I*abs(_C1)*t)

Is there a trick I'm missing to get Maple to find this solution? Or is this outside the scope of what Maple can handle on it's own?

Thanks!

I'm receiving a very interesting error when attempting to solve a system of differntial equations:

{sqrt(2)*sqrt(F1(t))*diff(F2(t),t) = 0}:
% union {F3(t) = 0}:
pdsolve(%, {F1(t),F2(t),F3(t)});

When attempting to run this code, I get the following error:

Error, (in pdsolve/sys) invalid input: DifferentialAlgebra:-DifferentialRing expects value for keyword parameter blocks to be of type {undefined, Or(list({name, unknown, list({name,unknown})}),name,unknown)}, but received [F3, F2, _F1 = (NULL), F1 = [_F1, F1], _F2] 

Interestingly, removing the second line, or even the sqrt(2), allows the calculation to proceed correctly. It this a bug, or am I doing something wrong?

Thank you very much!

(I'm aware this would technically be a system of ODEs, not PDEs; my actual code includes additional partial derivatives. Additionally, dsolve appears to only generate a trivial solution in this case).

1 2 3 4 5 Page 5 of 5