sand15

957 Reputation

15 Badges

10 years, 300 days

MaplePrimes Activity


These are answers submitted by sand15

Based on Units but focuses only (as an example) on dimension LENGTH ans SI units (so "are" and "hectare" are not considered here).

 

restart

kernelopts(version)

`Maple 2015.2, APPLE UNIVERSAL OSX, Dec 20 2015, Build ID 1097895`

(1)

with(Units):

randomize(175847324662552);

175847324662552

(2)


For lengths, areas and volumes only

Ulength := [seq(cat(u, m), u in [m, c, d, ``, da, h, k])];

[mm, cm, dm, m, dam, hm, km]

(3)

Quizz := proc(N)
  local R, `Q&A`, n, r, u, U, e, x, X:

  R := proc()
    local  n, e:
    n := rand(0..100)():
    e := rand(-6..6)():
    if e <= 0 then
      return evalf[2](n*10^e)
    else
      return n*10^e
    end if:
  end proc:

  `Q&A` := NULL:
  for n from 1 to N do
    r     := R():
    u, U  := op(combinat:-randperm(Ulength)[1..2]):
    e     := rand(1..3)():
    x     := r*u^e:
    X     := convert(r*Unit(u^e), 'units', U^e):
    
    printf("\n%a = .......... %a\n", x, U^e):
    `Q&A` := `Q&A`, Printf("\n%a = %a %a\n", x, evalf[4](op(1, X)), U^e):
  end do:
  print():
  return [`Q&A`]
end proc:

answers := Quizz(5):


.14e-2*dam^3 = .......... mm^3

2.*dm^3 = .......... dam^3

.73*m^3 = .......... cm^3

3.*km^2 = .......... dam^2

89.*km^3 = .......... hm^3

 

(4)

# Correction

map(evalf, eval(answers, Printf=printf))


.14e-2*dam^3 = .1400e10 mm^3

2.*dm^3 = .2000e-5 dam^3

.73*m^3 = .7300e6 cm^3

3.*km^2 = .3000e5 dam^2

89.*km^3 = .8900e5 hm^3

 

[]

(5)

 

 

Download Units_Quizz_2.mw



An evolution which also enables quizz about velocities Units_Quizz_3.mw

 

 

 

 

discont(V, beta)
                            {-1, 0}

The disontinuity you see at x= 8 .1017 is an artifact due to number of Digits not large enough:

restart; with(plots)

C := 100:

alpha := .1:

m := 0.5e-1:

n := 0.9e-1:

k := 0.1e-1:

theta := (alpha*m+k)/(n-m):

lambda := 1.1*theta:

s := C*((1-theta/lambda)/(1+beta))^(1/beta):

V := (lambda*(n-m)*s*(1-(s/C)^beta)-k*s)/alpha;

16.50000000*(0.909090909e-1/(1+beta))^(1/beta)*(1-((0.909090909e-1/(1+beta))^(1/beta))^beta)-10.0*(0.909090909e-1/(1+beta))^(1/beta)

(1)

discont(V, beta)

{-1, 0}

(2)

``

plot(V, beta = 1 .. 10^18, color = [red]);

 

Digits := 20:
plot(V, beta = 1 .. 10^18)

 

# Or better:

plot(eval(V, beta=10^u), u=0..18)

 
 

``

Download MaplePrimes_Sep_19_sand15.mw

restart;

with(plots):
 

q := 0.9:
M := 1.01:

points := []:

for tau from 0.01 by 0.01 to 0.09 do

    eq1 := M^2*(1 - sqrt(1 - 2*x/M^2))
           + f*tau*(1 - exp(x/tau))
           + (2*(1-f)/(3*q-1))*(1 - (1+(q-1)*x)^((3*q-1)/(2*q-2))) = 0:

    eq2 := 1/sqrt(1 - 2*x/M^2)
           - f*exp(x/tau)
           - (1-f)*(1+(q-1)*x)^((q+1)/(2*q-2)) = 0:


    
    sol := fsolve({eq1, eq2}, {f, x}, {f=0.01..0.9, x=0.001..2});

    if sol::function then
        printf("tau=%.2f  ->  no solution found\n", tau);
    else
        fval := eval(f, sol);
        xval := eval(x, sol);
        points := [op(points), [fval, xval]];
        printf("tau=%.2f  ->  f=%.6f, x=%.6f\n", tau, fval, xval);
    end if:

od:
 

tau=0.01  ->  no solution found

tau=0.02  ->  no solution found

tau=0.03  ->  no solution found

tau=0.04  ->  no solution found

tau=0.05  ->  no solution found

tau=0.06  ->  no solution found

tau=0.07  ->  no solution found

tau=0.08  ->  no solution found

tau=0.09  ->  no solution found

 

# Change search ranges for fsolve or simply ignore them

points := []:

for tau from 0.01 by 0.01 to 0.09 do

    eq1 := M^2*(1 - sqrt(1 - 2*x/M^2))
           + f*tau*(1 - exp(x/tau))
           + (2*(1-f)/(3*q-1))*(1 - (1+(q-1)*x)^((3*q-1)/(2*q-2))) = 0:

    eq2 := 1/sqrt(1 - 2*x/M^2)
           - f*exp(x/tau)
           - (1-f)*(1+(q-1)*x)^((q+1)/(2*q-2)) = 0:


    
    sol := fsolve({eq1, eq2}, {f, x});

    if sol::function then
        printf("tau=%.2f  ->  no solution found\n", tau);
    else
        fval := eval(f, sol);
        xval := eval(x, sol);
        points := [op(points), [fval, xval]];
        printf("tau=%.2f  ->  f=%.6f, x=%.6f\n", tau, fval, xval);
    end if:

od:

tau=0.01  ->  f=0.851356, x=0.000000

tau=0.02  ->  f=0.856683, x=0.000000

tau=0.03  ->  f=0.001070, x=0.032805

tau=0.04  ->  f=0.001678, x=0.059488

tau=0.05  ->  f=0.002478, x=0.088687

tau=0.06  ->  f=0.003503, x=0.121100

tau=0.07  ->  f=0.004804, x=0.158068

tau=0.08  ->  f=0.006453, x=0.202525

tau=0.09  ->  f=0.008590, x=0.264387

 

points

[[.8513555201, 0.6964830318e-12], [.8566830887, 0.3912817906e-13], [0.1069988964e-2, 0.3280452951e-1], [0.1678278783e-2, 0.5948758155e-1], [0.2477635868e-2, 0.8868702371e-1], [0.3503054692e-2, .1211004031], [0.4803501518e-2, .1580677255], [0.6453490291e-2, .2025245703], [0.8590449799e-2, .2643866253]]

(1)

# You can select a posterior the points which suit you:

MyPoints := select(t -> is(t[1] > 0 and t[2] < 0.2), points);
print():
MyPoints := select(t -> is(t[1] > 0 and t[2] < 0.2 and t[2] > 0.01), points);

[[.8513555201, 0.6964830318e-12], [.8566830887, 0.3912817906e-13], [0.1069988964e-2, 0.3280452951e-1], [0.1678278783e-2, 0.5948758155e-1], [0.2477635868e-2, 0.8868702371e-1], [0.3503054692e-2, .1211004031], [0.4803501518e-2, .1580677255]]

 

 

[[0.1069988964e-2, 0.3280452951e-1], [0.1678278783e-2, 0.5948758155e-1], [0.2477635868e-2, 0.8868702371e-1], [0.3503054692e-2, .1211004031], [0.4803501518e-2, .1580677255]]

(2)

pointplot(points, symbol=solidcircle, color=blue,
          labels=["f","x"]):

NULL

Download solve_sand15.mw

The type depends on how you defne the distribution.
If some attributes are those of a discrete random variable than Maple understands that this random variable is discrete.

restart

with(Statistics):


PDF should be resereved to continuous random variable

dist := Distribution(
          PDF = unapply( piecewise(x > 0, exp(-6)*6^x/x!, 0), x)
        ):

X := RandomVariable(dist):

exports(attributes(X)[3]);

PDF(X, x)

Conditions, PDF

 

piecewise(0 < x, exp(-6)*6^x/factorial(x), 0)

(1)


For a discrete random variable use ProbabilityFunction instead

dist := Distribution(
          ProbabilityFunction = unapply( piecewise(x > 0, exp(-6)*6^x/x!, 0), x)
        ):

X := RandomVariable(dist):

exports(attributes(X)[3]);

(attributes(X)[3]):-Type;
 

Conditions, ProbabilityFunction, Type

 

discrete

(2)


Look how Maple interpretes the probability function in terms of PDF

:-ProbabilityFunction('X') = ProbabilityFunction(X, x);

:-PDF('X') = PDF(X, x)

ProbabilityFunction(X) = piecewise(0 < x, exp(-6)*6^x/factorial(x), 0)

 

PDF(X) = sum(exp(-6)*6^k*Dirac(x-k)/factorial(k), k = 1 .. infinity)

(3)
 

 

Download discrete.mw

BY THE WAY: A correct definition of the ProbabilityFunction is

ProbabilityFunction = unapply( piecewise(x >= 0, exp(-6)*6^x/x!, 0), x)

Indeed

# With your definition 

sum(PDF(X, x), x=-infinity..+infinity) = 1-e-6

# With my correction above

sum(PDF(X, x), x=-infinity..+infinity) = 1

Once correctly defined, the probability function is that of a Poisson random variable with parameter equal to 6.
I don't know if you were aware of this and if your question is to be interpreted in general terms as “How do you define a discrete random variable?” (the illustration provided being useless and only adding to the confusion), or if you didn't realize this, in which case there is no need to define a user distribution because the Poisson distribution already exists.

If you are interested to know how to define a parameterized distribution (assuming, of course, that you don't want to use Poisson 😉 , something I could understand given some general drawbacks concerning the way Maple defines discrete random variable, see below).

Look to this simplified version of the worksheet parameterized_discrete.mw, where a more complete definition of Distribution is made and which provides more details including a comparison to Statistics:-RandomVariable(Poisson(...)) :

restart

with(Statistics):


A parameterized Distribution

dist := proc(a)
  Distribution(
    ProbabilityFunction = unapply( piecewise(x >= 0, exp(-a)*a^x/x!, 0), x)
  )
end proc:

X := RandomVariable(dist(alpha)):

:-ProbabilityFunction('X') = ProbabilityFunction(X, x);

ProbabilityFunction(X) = piecewise(0 <= x, exp(-alpha)*alpha^x/factorial(x), 0)

(1)

sum(ProbabilityFunction(X, x), x=-infinity..+infinity)

1

(2)

X := RandomVariable(dist(6)):

:-ProbabilityFunction('X') = ProbabilityFunction(X, x);

ProbabilityFunction(X) = piecewise(0 <= x, exp(-6)*6^x/factorial(x), 0)

(3)
 

 

Funny:  you can use PDF (even if it is ugly) and lure Maple this way: discrete.mw

@AHSAN 

restart

with(plots):
with(plottools):
with(Statistics):

Z := Sample(Normal(0, 1), 10):

A := Array([seq(2+sin(10*Pi*i/15+2*Z[i]), i = 1..5)]):

B := Array([seq(2+sin(10*Pi*i/15+3*Z[i]), i = 1..5)]):

C := Array([seq(2+sin(10*Pi*i/15+4*Z[i]), i = 1..5)]):

p0 := ColumnGraph([A, B, C], legend = ["A", "B", "C"]):

NbGroups := 5:
NbConds  := 3:

dy := 0.5:

p1 := display(
  transform((x, y, z) -> [x, z, y])(extrude(p0, 0..dy))

  , seq(PLOT3D(CURVES([[0, dy, z], [NbGroups-1+NbConds/(NbConds+1), dy, z]], COLOR(RGB, 0.8$3))), z = 0.25..2.5, 0.25)
  , seq(PLOT3D(CURVES([[0, 0, z], [0, dy, z]], COLOR(RGB, 0.8$3))), z = 0.25..2.5, 0.25)
  , seq(textplot3d([i+(NbConds/2)/(NbConds+1), 0, 0, convert(i+1, string)], align=below, font=[Helvetica, bold, 15]), i=0..NbGroups-1)

  , scaling=constrained
  , orientation=[-66, 76, 2]
  , axis[1]=[tickmarks=[]]
  , axis[2]=[tickmarks=[]]
  , labels=["", "", "H"]
):

p1;

 

CondNames := ["A", "B", "C"]:

if NbConds::odd then
  dx := [seq(NbGroups-1+(NbConds/2)/(NbConds+1) + 1/(NbConds+1)*i, i=-(NbConds-1)/2..(NbConds-1)/2)]
else
  dx := [seq(NbGroups-1+(NbConds/2)/(NbConds+1) + 1/(NbConds+1)*i, i=-NbConds/2..NbConds/2)]
end if:

p2 := display(
  p1,
  seq(textplot3d([dx[i], 0, 0.25, CondNames[i]], align=below, font=[Helvetica, bold, 15], color=white), i=1..NbConds)
):

p2;

 

Download Example_3D.mw

lhs(Eq1) > 0 in the range you provide.

Beware_of_the_ranges.mw


The first problem you face is that LaTeX is a sotware system for typesetting documents and not a computer algebra system.
Maple  syntax relies upon maths while LaTeX syntax is most permissive: this means that if any Maple formula can be translated into a syntactically correct LaTeX expression the converse is not true.
For instance this LaTeX expression (where the "/" sign means, in the context of the paper, "conditionnally to") has no Maple meanings:


Another example taken at random from Goodle image.

So, assuming the LaTeX expression has a Maple sense, which would be the case if the author did some Maple work, converted some extression into LaTeX and imported it into its LaTeX development tool (Overleaf for instance), one may think that the LaTeX formula can be translated in Maple.


The LaTeX case

I assume below that you have the LaTeX source not only its compiled rendering.

The a priori best way:
(1) As you have Maple 2025 you must dispose of the MathML:-FromLaTeX function, see HERE.
As I am not that lucky I can't test it to tell you about its possible limitations.


(2) There exists some online translators (AI Chat for instance) but you must extremely very careful on the translation they provide (specifically if your expressions involve vectors, matrices, derivatives, integral).
To be confident in the online translator you could be tempted to use procced this way

  1. In Maple:
    1. write some expression expr
    2. Convert it to LaTeX.
    3. Copy the output.
  2. In the online translator:
    1. Paste the LaTeX expression.
    2. Ask for its Maple translation
    3. Copy it
  3. In Maple:
    1. Paste the experssion the translator provided
    2. compare to the original maple expression expr.

 

(3)  An old (2016) Mapleprimes question (note that SnuggleTeX no longer exists).

Nevertheless, even if you can use FromLaTeX, point (2) might be usefull depending on FromLaTeX limitations (if any).


The "no LaTeX source code" case

Without LaTeX source (pdf article for instance) a copy-paste of the expression into a Maple worksheet it possible but it is very likely that you will have to correct it.
For instance the illustration I provided at the top of this reply, copied-pasted in maple document mode gives this





The "hand-written" case

Is obviously even more complex than this latter because a first step to convert a handwritten note into LaTeX seems mandatory (see for instance NotesToLaTeX, MathWrite, or others)



In My Opinion,

Even i this work can seem tedious to you, I believe that converting handwritten notes or LaTeX compiled outputs (not a source code) into Maple expressions is much safer if you do it carefully without looking forthe help of some automatic translator.



Last point:

If you are interesting in writting something like LHS = RHS1 = RHS2 = ....RHSN in Maple, just browse the Mapleprimes site: there has been a recent question about whose @acer replied.

You should upload your worksheet so that we can verify there is no spurious character in the expression you want to expand.

restart

kernelopts(version)

`Maple 2015.2, APPLE UNIVERSAL OSX, Dec 20 2015, Build ID 1097895`

(1)

f := (m-1/2)^4 - (5/2+12*c)*(m-1/2)^2 + 1/4*(9/4+12*c)

(m-1/2)^4-(5/2+12*c)*(m-1/2)^2+9/16+3*c

(2)

fe := expand(f);

m^4-12*c*m^2-2*m^3+12*c*m-m^2+2*m

(3)

# check:

simplify(f-fe);

0

(4)

# In detail:

g := (m-1/2)^4 - (5/2+12*c)*(m-1/2)^2 + ``(1/4)*(9/4+12*c);
print():


opg  := [op(g)]:
eopg := map(expand, opg):
print~(`&equiv;`~(opg, eopg)):

(m-1/2)^4-(5/2+12*c)*(m-1/2)^2+``(1/4)*(9/4+12*c)

 

 

`&equiv;`((m-1/2)^4, m^4-2*m^3+(3/2)*m^2-(1/2)*m+1/16)

 

`&equiv;`(-(5/2+12*c)*(m-1/2)^2, -(5/2)*m^2+(5/2)*m-5/8-12*c*m^2+12*c*m-3*c)

 

`&equiv;`(``(1/4)*(9/4+12*c), 9/16+3*c)

(5)

`&equiv;`~(g, add(eopg));

`&equiv;`((m-1/2)^4-(5/2+12*c)*(m-1/2)^2+``(1/4)*(9/4+12*c), m^4-12*c*m^2-2*m^3+12*c*m-m^2+2*m)

(6)
 

 

Download expand.mw

The solution has a single branch if v__0 <> 0 and two branches instead.

branches.mw

I dont know if the recent Maple versions (I use Maple 2015) have something equivalent to solve/parametric for dsolve?
Something that could write

dsolve({ode, ic}, {v(x)}, 'parametric'='full', 'parameters'={v__0});

and would deliver all the branches depending on the value of v__0

You define f[i] as a function of two arguments p2 and pr but you use only one in the following command:

Cs := {seq(beta[i] = subs(pr = 0, f[i](pr)), i = 1 .. 2)};

Error, invalid input: f[1] uses a 2nd argument, pr, which is missing


Correct yourself the definition of Cs or f[i]'s before going further.

Have you ever considered that attaching an article might give the impression that you are asking the community to code and solve the equations it contains? Perhaps it is not surprising that no one then replies to you..

This put aside the error message is very clear: if a bvp problem is set over a compact subset of IR, let's say the interval [-1, +1], the the boundaries conditions have to be imposed at y=-1 and y=+1 and not aa some third point inside [-1, +1].
So your problem IS NOT a bvp problem.

This said there are essentially two ways to tackle it

  1. Solve independently two bvp problems:
    1. One on interval [-1, 0] with unfixed values at y=0
    2. One on interval [0, 1] with still unfixed calues at y=0... but the same of the previous problem
    3.  Connect the left and right solution in order that your "internal conditions at y=0" are fullfilled.
    4. To do this you will have to solve some minimization ptoblem.
       
  2. Solve a single bvp problem (the optionI choosed) over [-1, +1] with some bc unfixed and iterate over the solutions until your "internal conditions at y=0" are fullfilled.

The attached file explains you how to do this.

Last point: in OdeSys you have not given the parameter R some numeric value. So I arbitrarily choosed to take R=0.
If this choice does not suit yoy feel free to take another value.

The attached worksheet does not browse all the values of j as, for questions of time, I only considered j=1.
Here again it's up to you to complete the job if you agree with it.

symetry_paper_work_sand15.mw

Roughly speking you want to solve, with respect to 1 single indeterminate a__1233 polynomial equations in a__12 whose degrees range from 0 (!!!) to 3.
Are you seriously expecting to find a solution unless, maybe, the trivial one a__12 = 0?

Read this worksheet  help-parameter_sand15.mw

You will see that only 16 equations out of 29 (because 4 of the initial 33 equations simply do not contain a__12) have only in common the root a__12 = 0 and that the 13 remaining ones may have the same root provided the remaining parameters verify some relations.
If  by chance it happens to be the case, then the unique common root to all the 29 equations is a__12 = 0.

One you have understood what the attached file contains I advice you to reformulate what you want to achieve. Maybe fixing constraints on the remaining parameters or some other stuff.

The Warning, solutions may have been lost  comes from the fact that it is difficult for Maple to provide a general answer which depends on all the 7or 8 remaining parameters.

So the "solution" you expect is in fact an extremely complex piecewise structure, all the more complex to read that each clause and ppiece may have a lengthy expression.
In my opinion it is always a good idea in such a case to "synthetize" the expression you want to solve before really trying to solve it.
I suggest you this: Q_on_solve_sand15.mw


For two indeterminates named x and y:

 

restart
S := N -> ListTools:-Reverse([op(sort(add(seq(seq(x^i*y^j, j=0..N-i), i=0..N))))]):
R := S(2);
        [1, y, x, y^2 , x*y, x^2]

# EDITED:
assign( op([seq(p[i-1], i=1..nops(R))] =~ R) );


S(3); 

     [1, y, x, y^2 , x*y, x^2 , y^3 , x*y^2 , x^2*y, x^3 ]

 


For something more general you could use this  general_procedure.mw

1 2 3 4 5 6 7 Page 1 of 7