Kitonum

20084 Reputation

26 Badges

17 years, 22 days

MaplePrimes Activity


These are answers submitted by Kitonum

I've tweaked your procedure a bit. Now it automatically calculates  z_min  and  z_max . I made the numerical values for the grid  as the procedure's parameter (the list  G ). Now a user can choose these values himself (without changing the procedure code) so that the graph looks beautiful :

restart:
grids:=proc(f::algebraic,x_range::`=`,y_range::`=`,G::list)
 local z_min,z_max,plot_f,xz,yz,xy;
uses plots;
z_min:=floor(minimize(f,x_range,y_range));
z_max:=ceil(maximize(f,x_range,y_range));
plot_f:=plot3d(f,x_range,y_range);
xz:=plot3d([x,op([2,1],y_range),z],x_range,z=z_min..z_max,style=line,color=blue,thickness=0,grid=[G[1],G[3]]);
yz:=plot3d([op([2,1],x_range),y,z],y_range,z=z_min..z_max,style=line,color=blue,thickness=0,grid=G[2..3]);
xy:=plot3d([x,y,z_min],x_range,y_range,style=line,color=blue,thickness=0,grid=G[1..2]);
display(plot_f,xz,yz,xy,lightmodel=none,labels=[x,y,"f(x,y)"],labeldirections=[horizontal,horizontal,vertical],axes=frame);
end proc:

# Examples
f:=x^2-y: g:=x^2-y^2:
A:=grids(f,x=-1..3,y=-2..1,[5,4,7]):
B:=grids(g,x=-1..1,y=-1..1,[5,5,5]):
plots:-display(< A | B >);

Use option AllSolutions :

restart;
Sol:=solve(sin(x) = -1/2, x, AllSolutions);
about(_B1);
eval(Sol,_B1=0), eval(Sol,_B1=1);

 

 

Do

odeplot(s, [x, abs(f(x))], x = 0 .. 5, colour = red);

 

Use the  assign  command:

restart;
eq_VS_m4 := 132.790562 = -0.000588*VRi + 0.995381*VRr - (1692.955600*VRi - 1747.964480*VRr)/(VRi^2 + VRr^2);
eq_VS_m5 := 0 = 0.000588*VRr + 0.995381*VRi + (1747.964480*VRi + 1692.955600*VRr)/(VRi^2 + VRr^2);
eq_VS_m6 := (VRi^2 + VRr^2) * lhs(eq_VS_m4) = simplify((VRi^2 + VRr^2) * rhs(eq_VS_m4));
eq_VS_m7 := (VRi^2 + VRr^2) * lhs(eq_VS_m5) = simplify((VRi^2 + VRr^2) * rhs(eq_VS_m5));
sol := solve({eq_VS_m6,eq_VS_m7}, {VRr,VRi});

assign(sol[3]);
sqrt(VRi^2+VRr^2);


Or by the  eval  command without assigning:

restart;
eq_VS_m4 := 132.790562 = -0.000588*VRi + 0.995381*VRr - (1692.955600*VRi - 1747.964480*VRr)/(VRi^2 + VRr^2);
eq_VS_m5 := 0 = 0.000588*VRr + 0.995381*VRi + (1747.964480*VRi + 1692.955600*VRr)/(VRi^2 + VRr^2);
eq_VS_m6 := (VRi^2 + VRr^2) * lhs(eq_VS_m4) = simplify((VRi^2 + VRr^2) * rhs(eq_VS_m4));
eq_VS_m7 := (VRi^2 + VRr^2) * lhs(eq_VS_m5) = simplify((VRi^2 + VRr^2) * rhs(eq_VS_m5));
sol := solve({eq_VS_m6,eq_VS_m7}, {VRr,VRi});

eval(sqrt(VRi^2+VRr^2), sol[3]);
eval(sqrt(VRi^2+VRr^2), sol[2]);


The method with  eval  is more flexible, because allows not to overrun the entire code to use other solutions instead  sol[3] , but to use any of the solutions found if needed.

restart;
M:=proc(M1,M2)
local L1, L2;
L1:=[seq((k-1)/(M1-1),k=1..M1)]; L2:=[seq((k-1)/(M2-1)$M1,k=1..M2)];
Matrix(M1*M2, (i,j)->SGP[j](L2[i],L1[irem(i-1,M1)+1]));
end proc:


Examples of use:

M(2,3);
M(3,2);
M(3,3);


 

You should not use a name and the same indexed name in the same code.

Example:
 

f := a*x+b; 
f[1] := subs(x = 1, f); 
f[2] := subs(x = 2, f);

                                                    f := a x + b
                                                  f[1] := a + b
                                                     f[2] := f


Change names in your code, for example   psi[i]  with  psi1[i]  and  Omega[i]  with  Omega1[i]

We can easily find one solution to this equation in the form of a constant function  f(x) = C :

restart;
eq:=(1/24)*exp(-8)-(1/12)*exp(-5)+(1/24)*exp(-2)-(1/24)*exp(-10)+(1/24)*exp(-9)+(1/24)*exp(-1)+diff(f(x), x, x, x, x, x)+d*(diff(f(x), x))+e*f(x)+a*(diff(f(x), x, x, x, x))+b*(diff(f(x), x, x, x))+c*(diff(f(x), x, x))-1/24;
eval(eq,f(x)=C);
f(x)=solve(%, C);
odetest(%,eq);


The initial conditions for obtaining this solution are obvious. It is also obvious that  limit(C, x=infinity)=C  for C=constant

restart;
sin(2*n*Pi) assuming posint;
sin(n*Pi) assuming integer; # More general result 

                                     0
                                     0

 minhthien2016 180 To check, you can use the procedure below, which finds the center and radius of the insphere from the coordinates of the vertices of the tetrahedron.

restart:
Center_and_Radius:=proc(P1::Vector,P2::Vector,P3::Vector,P4::Vector)
local s1, s2, s3, s4, s, V, R;
uses LinearAlgebra;
s1:=1/2*Norm(CrossProduct(P3-P2,P4-P2),2, conjugate=false):
s2:=1/2*Norm(CrossProduct(P3-P1,P4-P1),2, conjugate=false):
s3:=1/2*Norm(CrossProduct(P2-P1,P4-P1),2, conjugate=false):
s4:=1/2*Norm(CrossProduct(P2-P1,P3-P1),2, conjugate=false):
s := s1+s2+s3+s4:
V:=1/6*Determinant(<P2-P1|P3-P1|P4-P1>);
R:=3*V/(s1+s2+s3+s4);
simplify(1/s*(s1*P1+s2*P2+s3*P3+s4*P4));
convert(%, list),simplify(R);
end proc:


Your example:

Center_and_Radius(<1, 2, 3>, <-2, 8, 9>, <5, 0, 7>, <3, 4, 2>);

                                         [2, 3, 4], 1


This tetrahedron has all flat angles at the vertix  [1,2,3]  equal to 90 degrees, so you can find an equal tetrahedron in the list from my first answer.

The method above does not work in Maple 2018.2.
First, we prove the identity for integers (no problem here). If the number is not an integer, then we use the obvious fact that any not integer real number  x  can be represented in the form  x=x0+t  , x0 is an integer and  t>0, t<1 .

restart;
x:=x0+t:
ceil(x0)+floor(-x0) assuming x0::integer;
ceil(x)+floor(-x) assuming x0::integer, t>0, t<1;
is(%=0) assuming t>0,t<1;

                                                 

 

 Earl 570 Since your equation is written in vector form, it is equivalent to a system of 3 equations with three unknown functions. Of course Maple easily solves this system. To obtain a specific solution, you need to set the initial conditions. I just formally solved these equations without delving into the physical meaning of all this:

restart;
with(LinearAlgebra):
r(t):=<r__x(t),r__y(t),r__z(t)>:
v(t):=diff(r(t),t);

Omega:=<0,0,1>: g := 9.81: theta := Pi/8:
diff(v(t), t)=~ 2/7*(Omega &x v(t)) + <0,5/7*g*sin(theta),0>;
Sys:=convert(%, list);
Sol:=dsolve(Sys);
eval(Sol,[_C1=0,_C2=0,_C3=0,_C4=0,_C5=0,_C6=0]);


We see if in the general solution we take all the undefined constants  _C  to be zero, then, in fact, motion along a straight line is obtained in the opposite direction of x-axis.

To plot something specific, you need to set the expression  g(x)  and 5 initial conditions for your 5th order equation.

Example:

restart;
g(x):=sin(x):
eq1 := diff(f(x),x$5)+2*diff(f(x),x$4)+diff(f(x),x$3)+diff(f(x),x$2)+2*diff(f(x),x)+3*f(x) = g(x);
sol:=dsolve({eq1, f(0)=0,D(f)(0)=1,(D@@2)(f)(0)=-1,(D@@3)(f)(0)=2,(D@@4)(f)(0)=-2}, numeric);
plots:-odeplot(sol, [x,f(x)], x=0..8);

                     

If you don't like an expression with sine instead of cosine, you can easily convert sine to cosine using the  convert  command:

restart;
eqaux_2 := l__bb = L__aa0 + L__aa2 * cos(2*theta - 4/3*Pi);
eqaux_2 :=convert(eqaux_2, cos);

                      


Here we get the expression with a cosine even simpler than the original one  ( cos(2*theta - 4/3*Pi) = cos(2*theta+2*Pi/3)  is an identity).

 

You can use the  plots:-display  command to place multiple graphs on one plot.

Example:

restart;
sys := {diff(x(t), t) = y(t), diff(y(t), t) = -x(t)-(1/2)*y(t)}:
A:=DEtools:-DEplot(sys, [x(t), y(t)], t = 0 .. 15, [[x(0) = 1, y(0) = 0]]):
B:=plot(-x^2, x=-0.5..1):
plots:-display(A,B);

 

First 28 29 30 31 32 33 34 Last Page 30 of 280