Kitonum

13489 Reputation

24 Badges

11 years, 100 days

MaplePrimes Activity


These are answers submitted by Kitonum

m := n->piecewise(type(n,even),0, 1):
f := proc(a,b)
if type(a*b,integer) then return m(a*b) else FAIL fi;
end:

 
f(a,b);
f(2,3);
f(1,3);
f(a,3);

sin(30*Pi/180);
30^`°`;

                                                 

 

 

                                      

Example:

restart;
CurveFitting:-LeastSquares([[0, 1], [1, 2], [2, 3], [3, 10]], x);
A, B:=coeffs(%);

                               1/5+14*x*(1/5)
                             A, B := -1/5, 14/5

Good question - vote up.

restart;
P:=proc(n::nonnegint) 
local x, x0, v0, q, v:= <<x>>, s:= <<0>>, p:= <<1>>; 
   for x0 to n do v0:=eval(v,x=x0); p:= eval(p.v0,x=x0); s:= eval(s+v0, x=x0) od; 
   p, s; 
end proc:

P(6);

I have never used the command  rtable_eval  and do not know the reasons for this error.  A workaround below:

restart;
P:=proc()
local v;
v:= <x>;  
eval(v, x=1);
end proc():
P();

`&Delta;a`;
                                    

 

 

 

Should be  u*v  instead of  uv .

diff(BesselJ(alpha, sqrt(u^2+v^2-2*u*v*cos(phi))), u);

 

Here are 2 easy ways to do this without a long fraction bar:

restart;
(1/x)*(x^3-2*x^2+5*x-7);  # With long fraction bar
``(1/x)*(x^3-2*x^2+5*x-7);  # The first way
(x)^``(-1)*(x^3-2*x^2+5*x-7);  # The second way

                           

 

Here are all the $ 200 shopping options, sorted by increasing Gb:

sort([seq(seq(seq([s=32*x+64*y+128*z,['x'=x,'y'=y,'z'=z]],z=floor((200-15*x-20*y)/30)),y=0..floor((200-15*x)/20)),x=0..floor(200/15))], key=(p->rhs(p[1]))):
select(p->floor((200-eval(15*x + 20*y + 30*z,p[2]))/15)<1 and floor((200-eval(15*x + 20*y + 30*z,p[2]))/20)<1 and floor((200-eval(15*x + 20*y + 30*z,p[2]))/30)<1, %)[];
nops([%]); # The number of all the possibilities

       [s = 416, [x = 13, y = 0, z = 0]], [s = 448, [x = 10, y = 2, z = 0]], [s = 448, [x = 12, y = 1, z = 0]], [s = 480, [x = 9, y = 3, z = 0]], [s = 480, [x = 11, y = 0, z = 1]], [s = 512, [x = 6, y = 5, z = 0]], [s = 512, [x = 8, y = 2, z = 1]], [s = 512, [x = 8, y = 4, z = 0]], [s = 512, [x = 10, y = 1, z = 1]], [s = 544, [x = 5, y = 6, z = 0]], [s = 544, [x = 7, y = 3, z = 1]], [s = 544, [x = 9, y = 0, z = 2]], [s = 576, [x = 2, y = 8, z = 0]], [s = 576, [x = 4, y = 5, z = 1]], [s = 576, [x = 4, y = 7, z = 0]], [s = 576, [x = 6, y = 2, z = 2]], [s = 576, [x = 6, y = 4, z = 1]], [s = 576, [x = 8, y = 1, z = 2]], [s = 608, [x = 1, y = 9, z = 0]], [s = 608, [x = 3, y = 6, z = 1]], [s = 608, [x = 5, y = 3, z = 2]], [s = 608, [x = 7, y = 0, z = 3]], [s = 640, [x = 0, y = 8, z = 1]], [s = 640, [x = 0, y = 10, z = 0]], [s = 640, [x = 2, y = 5, z = 2]], [s = 640, [x = 2, y = 7, z = 1]], [s = 640, [x = 4, y = 2, z = 3]], [s = 640, [x = 4, y = 4, z = 2]], [s = 640, [x = 6, y = 1, z = 3]], [s = 672, [x = 1, y = 6, z = 2]], [s = 672, [x = 3, y = 3, z = 3]], [s = 672, [x = 5, y = 0, z = 4]], [s = 704, [x = 0, y = 5, z = 3]], [s = 704, [x = 0, y = 7, z = 2]], [s = 704, [x = 2, y = 2, z = 4]], [s = 704, [x = 2, y = 4, z = 3]], [s = 704, [x = 4, y = 1, z = 4]], [s = 736, [x = 1, y = 3, z = 4]], [s = 736, [x = 3, y = 0, z = 5]], [s = 768, [x = 0, y = 2, z = 5]], [s = 768, [x = 0, y = 4, z = 4]], [s = 768, [x = 2, y = 1, z = 5]], [s = 800, [x = 1, y = 0, z = 6]], [s = 832, [x = 0, y = 1, z = 6]]
                                                                            44


We see that  s=832  can only be obtained in one way.

 

Edit.
 

[seq(seq(`if`(5*x + 3*y = 100, [x,y], NULL), x=0..20), y=0..20)];
plots:-pointplot(%);

 

Here are the Euclidean algorithm and the extended Euclidean algorithm.

Euclidean algorithm 

 

GCD:=proc(a,b)
local r, r1, b1;
r:=a-b*iquo(a,b); b1:=b;
while r>0 do
r1:=b1-r*iquo(b1,r); b1:=r; r:=r1;
od;
b1;
end proc:

GCD(2680,3244);  # Example

4

(1)

 

Extended Euclidean algorithm
 

ExtendedEuclid:=proc(a::nonnegint,b::nonnegint)
local d, x, y, x1, y1, x2, y2, a1, b1, q, r;
if a<b then error "Should be a>=b" fi;
if b=0 then d:=a; x:=1; y:=0; return [d,x,y] fi;
x2:=1; x1:=0; y2:=0; y1:=1; a1:=a; b1:=b;
while b1>0 do
q:=floor(a1/b1); r:=a1-q*b1; x:=x2-q*x1; y:=y2-q*y1;
a1:=b1; b1:=r; x2:=x1; x1:=x; y2:=y1; y1:=y;
od;
d:=a1; x:=x2; y:=y2;
[d,x,y];
end proc:

ExtendedEuclid(30,12);  # Example

[6, 1, -2]

(2)

30*1+12*(-2);  # Check

6

(3)

ExtendedEuclid(65208, 18344);  # Your example

[8, 539, -1916]

(4)

65208*539+18344*(-1916);  # Check

8

(5)

 


 

Download Euclid.mw

You can use the commands  plots:-arrow, plots:-display, LinearAlgebra:-CrossProduct  to plot vectors, the results of operations on them, and animations of these. See examples below:


 

restart;
with(plots):
with(LinearAlgebra):

u, v, w:=<1, 2, 3>, <-1, 2, 3>, <-1, 2, -2>:
U:=arrow(u, color=blue):
V:=arrow(u, v, color=blue):
W:=arrow(u+v, w, color=blue):

r1:=u+v+w: r2:=u-v: r3:=CrossProduct(u,v):
R1:=arrow(r1, color=red):
R2:=arrow(v, r2, color=red):
R3:=arrow(CrossProduct(u,v), color=red):
display(U, V, W, R1, scaling=constrained);
V1:=arrow(v, color=blue):
display(U, V1, R2, scaling=constrained);
display(U, V1, R3, scaling=constrained);

 

 

 

display(plot3d([[0,0,0]])$5, display(U)$10, display([U,V])$10, display([U,V,W])$10, display([U,V,W,R1])$10, insequence, scaling=constrained);

 

 


 

Download Plotting_Vectors.mw

Try the  Explore  command for this:


 

restart;
f:=1+B*x-(1/12)*B*x^3+0.1666666667e-4*B^3*x^3-4.166666667*10^(-8)*B^4*x^4+(1/160)*B*x^5+8.333333333*10^(-11)*B^5*x^5-0.5000000000e-2*B^2*x^2+0.1666666667e-4*B*x^3*C^2-4.166666667*10^(-8)*B*x^4*C^3+8.333333333*10^(-11)*B*x^5*C^4-0.5000000000e-2*B*C*x^2+0.3333333333e-4*B^2*x^3*C-1.250000000*10^(-7)*B^3*x^4*C-1.250000000*10^(-7)*B^2*x^4*C^2+3.333333333*10^(-10)*B^4*x^5*C+5.000000000*10^(-10)*B^3*x^5*C^2+3.333333333*10^(-10)*B^2*x^5*C^3+0.7291666667e-3*B*x^4*C-0.3333333333e-5*B*x^5*C^2+0.6250000000e-3*B^2*x^4-0.2083333333e-5*B^3*x^5-0.5416666667e-5*B^2*x^5*C:
Explore(plot(f, x=-4..4, view=-10..10), B=-5...5., C=-5...5.);

 



It can be noted that changing the parameter  C  has very little effect on the graph

 

Download 2param.mw

Here is the corrected code:
 

restart:
with(PDEtools):
PDE :=  diff(y(x,t), t)-diff(y(x,t), x,x,t)-diff(y(x,t), x$2)+ diff(y(x,t), x)+y(x,t)*diff(y(x,t),x)=exp(-t)*(cos(x)-sin(x)+1/2*exp(-t)*sin(2*x));

diff(y(x, t), t)-(diff(diff(diff(y(x, t), t), x), x))-(diff(diff(y(x, t), x), x))+diff(y(x, t), x)+y(x, t)*(diff(y(x, t), x)) = exp(-t)*(cos(x)-sin(x)+(1/2)*exp(-t)*sin(2*x))

(1)

# Initial/boundary conditions
  BCs:=y(0,t) = 0, y(Pi,t)=0;
  ICs:=y(x,0) =sin(x) ;

y(0, t) = 0, y(Pi, t) = 0

 

y(x, 0) = sin(x)

(2)

pdsolve({PDE, BCs,ICs}, y(x,t));  # NULL. Maple does not find any exact solution

num_sol := pdsolve(PDE, {BCs,ICs}, numeric);
num_sol:-plot3d(x=0..1, t=0..1);

_m2208546638688

 

 

 

 
 exact_solution:=exp(-t)*sin(x);
Test1:=pdetest(y(x,t)=exact_solution,[PDE, BCs,ICs]);

exp(-t)*sin(x)

 

[0, 0, 0, 0]

(3)

 


 

Download BBM_new.mw

restart;
P:=proc(n)
option remember;
P(0):=0; P(1):=1;
if n>=2 and P(n-1)-1 in [seq(P(k),k=0..n-2)] then return 2*P(n-1) else P(n-1)-1 fi;
end proc:


Examples of use:

P(100);
seq('P(k)', k=0..50);             

                                                                121
0, 1, 2, 4, 3, 6, 5, 10, 9, 8, 7, 14, 13, 12, 11, 22, 21, 20, 19,  18, 17, 16, 15, 30, 29, 28, 27, 26, 25, 24, 23, 46, 45, 44, 43,   42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 62, 61, 60, 59
 

1 2 3 4 5 6 7 Last Page 1 of 211