Kitonum

21475 Reputation

26 Badges

17 years, 49 days

MaplePrimes Activity


These are answers submitted by Kitonum

The procedure  P  saves from the list  L  only those pairs of entries  a  and  b  for which  abs(a - b)  equals the minimum distance  m  between the entries of the original list.


 

restart;
P:=proc(L::list(positive))
local n, L1, m, S, L2;
n:=nops(L);
L1:=sort(L);
m:=min(seq(L1[k]-L1[k-1],k=2..n));
S:={seq(`if`(L1[k]-L1[k-1]=m,op([L1[k-1],L1[k]]),NULL), k=2..n)};
select(x->evalb(x in S), L);
end proc:

# Examples
L:=[8.1 , 2.03 , 3.5 , 0.05 , 4.1]:
P(L);

L:=[8.1 , 7.5, 2.03 , 3.5 , 0.05 , 4.1]:
P(L);

[3.5, 4.1]

 

[8.1, 7.5, 3.5, 4.1]

(1)

 


 

Download P.mw

To calculate sums with specific numerical (not symbolic) limits, use the  add command instead of sum :

M:=<x[1]^2+x[2]^2,-x[1]^2-x[2]^2; -x[1]^2-x[2]^2,x[1]^2+x[2]^2>;

Matrix(2, 2, {(1, 1) = x[1]^2+x[2]^2, (1, 2) = -x[1]^2-x[2]^2, (2, 1) = -x[1]^2-x[2]^2, (2, 2) = x[1]^2+x[2]^2})

(1)

M[1,1];

x[1]^2+x[2]^2

(2)

diff(M[1,1],x[1]);

2*x[1]

(3)

diff(M[1,1],x[2]);

2*x[2]

(4)

add(diff(M[1,1],x[k])+diff(M[1,k],x[1])-diff(M[k,1],x[1]), k=1..2);

2*x[1]+2*x[2]

(5)

 


The above also shows how easy it is to enter a matrix using 1D input instead of 2D. No palettes needed.

Download add.mw

 

 

You missed the multiplication sign. Should be

V:= (4*Pi*(d/2)^3)/3;
eval(V, d = 6.35*мм);

                    
                 

In arrays, indexing can start with any integer. For example:

n:=Array(0..2, [1,2,3]);
n[0];

              n := Array(0 .. 2, {0 = 1, 1 = 2, 2 = 3})
                                            1

Use the  expand  command:


 

restart;

eq_4_34 := x__alpha = C*x__a - C/2 * (x__b + x__c);

x__alpha = C*x__a-(1/2)*C*(x__b+x__c)

(1)

eq_4_33 := x__0 = 1/3*(x__a + x__b + x__c);

x__0 = (1/3)*x__a+(1/3)*x__b+(1/3)*x__c

(2)

eq_4_33aux := X__sub = (x__b + x__c);

X__sub = x__b+x__c

(3)

attempt2 := algsubs((x__b + x__c) = X__sub, eq_4_33);

x__0 = (1/3)*x__a+(1/3)*X__sub

(4)

attempt3 := X__sub = solve(attempt2, X__sub);

X__sub = -x__a+3*x__0

(5)

eq_4_34x := x__alpha = algsubs((x__b + x__c) = 3*x__0 - x__a, rhs(eq_4_34));

x__alpha = -(1/2)*C*(-x__a+3*x__0)+C*x__a

(6)

eq_4_35 := x__a = simplify(solve(eq_4_34x, x__a));

x__a = (1/3)*(3*C*x__0+2*x__alpha)/C

(7)

expand(eq_4_35);
desired:= x__a = x__0 + (2*x__alpha)/(3*C);

x__a = x__0+(2/3)*x__alpha/C

 

x__a = x__0+(2/3)*x__alpha/C

(8)

 


 

Download Q20201005_2_new.mw

restart;
z:=x+I*y:
F:=evalc(abs(z+1)*abs(z-1)=1);
 plots:-implicitplot(F, x=-3..3, y=-3..3, gridrefine=3, scaling=constrained, size=[600,300]);

                   

     

1. To calculate derivatives at specific points, it is better to use the differentiation operator  D  than a combination of  diff  with  subs.
2. For a better perception of what this paraboloid looks like, it is necessary to reduce the ranges on all 3 axes.
3. Calculation confirms that the vertex of this paraboloid is (0, 0, -6).

restart;
f:=(x,y)->2*x^2+3*y^2-x*y-6;
D[1](f)(1,1); # The partial derivative by x in the point (1,1)
D[2](f)(1,1); # The partial derivative by y in the point (1,1)
p1:=plot3d(f(x,y), x=-3..3, y=-3..3, style=patchcontour, view=-7..6):
p2:=plots:-spacecurve([x,1,f(x,1)],x=-3..3, color=red, thickness=3):
p3:=plots:-spacecurve([1,y,f(1,y)],y=-3..3, color=blue, thickness=3):
plots:-display(p1,p2,p3, axes=normal);
minimize(f(x,y), x=-3..3, y=-3..3, location);

             

           

Download Q20201001_new.mw
 

restart;

Given_eq_3_37 := M = k_ * sqrt(L__1 * L__2);

M = k_*(L__1*L__2)^(1/2)

(1)

Given_eq_3_30 := k_ = sqrt((L__m)^2 / (L__1 * L__2p));

k_ = (L__m^2/(L__1*L__2p))^(1/2)

(2)

Given_eq_3_37a := combine(subs([Given_eq_3_30], Given_eq_3_37)) assuming L__1>0, L__2>0;

M = (L__2*L__m^2/L__2p)^(1/2)

(3)

 


 

Download Q20201001_new.mw

 

Use the option  free=...  , for example:


 

A := Matrix(4, 4, {(1, 1) = 1, (1, 2) = 3, (1, 3) = 4.5, (1, 4) = 7, (2, 1) = 0, (2, 2) = 2, (2, 3) = 5, (2, 4) = 9, (3, 1) = 0, (3, 2) = 0, (3, 3) = 0, (3, 4) = 0, (4, 1) = 0, (4, 2) = 0, (4, 3) = 0, (4, 4) = 0}); B := Vector(4, {(1) = 0, (2) = 0, (3) = 0, (4) = 0}); C := LinearAlgebra[LinearSolve](A, B, free = 't')

Vector[column](%id = 18446746219697584838)

(1)

W1 := C[1]; W2 := C[2]; W3 := C[3]; W4 := C[4]; Q := W1*x^4+W2*x^3+W3*x^2+W1

(HFloat(3.0)*t[2]+HFloat(6.5)*t[1])*x^4+(-HFloat(2.5)*t[2]-HFloat(4.5)*t[1])*x^3+t[2]*x^2+HFloat(3.0)*t[2]+HFloat(6.5)*t[1]

(2)

``

NULL


 

Download MultipleTCoefficients_new.mw

 

In your worksheet the function  F  was not defined correctly. Here's the revised version:


 

restart

with(LinearAlgebra)

F := proc (x) options operator, arrow; x^2 end proc

F(u(t))

u(t)^2

(1)

for n from 0 while n <= 6 do V[n] := (diff(F(sum(t^i*u[i], i = 0 .. n)), [`$`(t, n)]))/factorial(n) end do

t := 0

0

(2)

for i from 0 while i <= n-1 do A[i] := V[i] end do

u[0]^2

 

2*u[0]*u[1]

 

2*u[0]*u[2]+u[1]^2

 

2*u[0]*u[3]+2*u[1]*u[2]

 

2*u[0]*u[4]+2*u[1]*u[3]+u[2]^2

 

2*u[0]*u[5]+2*u[1]*u[4]+2*u[2]*u[3]

 

2*u[0]*u[6]+2*u[1]*u[5]+2*u[2]*u[4]+u[3]^2

(3)

NULL

``


 

Download Adomian_Polynomials_new.mw

Perhaps for your purposes it is sufficient that the index does not take on any values, but from some finite set, for example from  {1, 2, ... ,100} :

for k from 1 to 100 do
alias(F[k]=F[k](x));
od:

whattype(F[1]);
whattype(F[33]);

 

The easiest way to do this is with the  plots:-inequal  command:

restart; 
with(plots): 
inequal({x-y-1 <= 0, 0.5*y^2-x-3 <= 0}, x = -4 .. 6, y = -3 .. 5, color = red);

 

restart;
ode:=[diff(x(t),t) = 2*x(t)-y(t), diff(y(t),t) = 3*x(t)-2*y(t)]:
p1:=DEtools:-dfieldplot(ode,[x(t),y(t)],t=-2..2,x=-4..4, y=-4..4,arrows=SLIM,color=coral,labels=[``,``]):
p2:=plot(3*x,x=-4..4,y=-4..4,color=magenta):
p3:=plot(x,x=-4..4,y=-4..4,color=blue):
T:=plots:-textplot([[4.5,-0.2,x],[-0.2,4.5,y]], font=[times,16]):
plots:-display(p1,p2,p3,T, view=[-4.6..4.6,-4.6..4.6], size=[600,600]);

                  


 

restart;

B:=<<39,76,151,301,601>|<7.71E-8,5.43E-9,3.55E-10,2.11E-11,1.32E-12>|
        <26,51,101,201,401>|<6.46E-3,1.17E-4,1.88E-6,2.96E-8,4.46E-10>|
        <26,51,101,201,401>|<2.74E-4,6.34E-6,1.16E-7,1.85E-9,2.92E-11>|
        <26,51,101,201,401>|<6.48E-4,4.39E-5,2.99E-6,1.88E-7,1.18E-8>>;

for i from 1 to 5 do
   B[i, 2] := log[10](B[i, 2]):                                          
   B[i, 4] := log[10](B[i, 4]):                 
   B[i, 6] := log[10](B[i, 6]):                 
   B[i, 8] := log[10](B[i, 8]):        
       

   
end do:  # computing the log of the max-error
B: # This is the table of values we'll plot.
local log:
T:=plot([B[..,[1, 2]],B[1..1,[1, 2]], B[.., [3, 4]],B[1..1,[3, 4]],
         B[..,[5, 6]],B[1..1,[5, 6]],B[.., [7, 8]],B[1..1,[7, 8]]],
        legend = ["","BFFM","", "BHT","", "BHTRKNM", "", "BNM"],
        #title="Efficiency Curve for Example 1",
        style = ["pointline","point","pointline","point","pointline","point","pointline","point"],
        symbolsize = 15,axes = framed,
        symbol = [box,box, circle,circle,diamond,diamond,solidcircle, solidcircle],
        color=[red, red, blue,blue, black, black, green, green],
        axis = [gridlines = [colour = green, majorlines = 1,linestyle = dot]],
        labels = ["NFE", log[10](cat(`Max `,Err))]);

Matrix(5, 8, {(1, 1) = 39, (1, 2) = 0.7710000000e-7, (1, 3) = 26, (1, 4) = 0.646e-2, (1, 5) = 26, (1, 6) = 0.274e-3, (1, 7) = 26, (1, 8) = 0.648e-3, (2, 1) = 76, (2, 2) = 0.5430000000e-8, (2, 3) = 51, (2, 4) = 0.117e-3, (2, 5) = 51, (2, 6) = 0.634e-5, (2, 7) = 51, (2, 8) = 0.439e-4, (3, 1) = 151, (3, 2) = 0.3550000000e-9, (3, 3) = 101, (3, 4) = 0.188e-5, (3, 5) = 101, (3, 6) = 0.1160000000e-6, (3, 7) = 101, (3, 8) = 0.299e-5, (4, 1) = 301, (4, 2) = 0.2110000000e-10, (4, 3) = 201, (4, 4) = 0.2960000000e-7, (4, 5) = 201, (4, 6) = 0.1850000000e-8, (4, 7) = 201, (4, 8) = 0.1880000000e-6, (5, 1) = 601, (5, 2) = 0.1320000000e-11, (5, 3) = 401, (5, 4) = 0.4460000000e-9, (5, 5) = 401, (5, 6) = 0.2920000000e-10, (5, 7) = 401, (5, 8) = 0.1180000000e-7})

 

Warning, A new binding for the name `log` has been created. The global instance of this name is still accessible using the :- prefix, :-`log`.  See ?protect for details.

 

 

 


 

Download Help_data_points_new1.mw

 

In the example below, we construct 2 vertical lines (directrixes for an ellipse) in two ways:


 

restart;
a:=5: b:=3:
P:=plots:-implicitplot(x^2/a^2+y^2/b^2=1, x=-a..a, y=-b..b, color=blue):
c:=sqrt(a^2-b^2);
e:=c/a;
L1:=plot([[-a/e,t,t=-4..4],[a/e,t,t=-4..4]], color=red): # The first way
L2:=plots:-implicitplot([x=-a/e, x=a/e], x=-7..7, y=-4..4, color=red): # The second way
plots:-display(P, L1, scaling=constrained, view=[-7..7,-4..4]);
plots:-display(P, L2, scaling=constrained, view=[-7..7,-4..4]);

4

 

4/5

 

 

 

 


Edit. We can also build any straight lines using the plottools:-line  command (the third way).

Download vl-2.mw

First 50 51 52 53 54 55 56 Last Page 52 of 290