Kitonum

21525 Reputation

26 Badges

17 years, 75 days

MaplePrimes Activity


These are answers submitted by Kitonum

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
 

In the previous answer, the asymptote  y=-x  is omitted. To automatically find all asymptotes (inclined and vertical), use  Student:-Calculus1:-Asymptotes  command:

y:=sqrt(1+x^2):
Student:-Calculus1:-Asymptotes(y,x);
plot([y,x,-x], x=-5..5, -1..5, color=[red,black$2], thickness=[2,1$2], linestyle=[1,3$2], scaling=constrained); # The plotting for a visualization

                  

 

 

It seems that the natural parameterization and calculation of the arc length in this example can only be done numerically:

restart;
r:= t-><cos(2*t), sin(3*t), 4*t>:
L:=unapply(int(sqrt(add(diff(r(t),t)^~2)), t=0..t),t);
f:=s->fsolve(s=L(t),t=0..infinity);
f(1);  # Example
g:=s->r(f(s));
g(1);  # Example

L:=unapply(int(sqrt(add(diff(r(t),t)^~2)), t=t1..t2),t1,t2);
evalf(L(1,3));  # Example

                  

 

restart;
a:= plots:-display(plottools :- arrow( [1, -2], [4, -1], 0.001, 0.05, 0.1)):
b:= plots:-display(plottools :- arrow( [-1, 3], [2, 1], 0.001, 0.05, 0.1)):
c:= plots:-display(plottools :- arrow( [0, 2], [-3, 0], 0.001, 0.05, 0.1)):
plots:-display([plot([[0,0]])$5,a$10,plots:-display([a,b])$10,plots:-display([a,b,c])$10], insequence);

     

 

Replace the last line with
dsx := dsolve(sys_ode, numeric);

Example of use:
dsx(0.1);

See this help page  rtable_indexing

From Fig. 2 it is clearly seen that  f(0)=1  and  D(f)(0)<0 , which contradicts your initial conditions.

 Jayaprakash J   For movable boundary conditions you can use the  Explore  command.

 

Download BVP_new.mw

restart;
  rnge:=-1..1:
  fcns:=[[[0,0]]$5, x$10, [x,x^2]$10, [x,x^2,(1-x)]$10]:
  plots:-display( [ seq
                    ( plot
                      ( fcns[j], x=rnge),
                      j=1..35
                    )
                  ],
                  insequence=true, scaling=constrained
                );

               


Here is a more complicated option:

restart;
with(plots):
A:=animate(plot, [x, x=-1..a, color=red, thickness=2], a=-1..1):
B:=animate(plot, [x^2, x=-1..a, thickness=2, color=green], a=-1..1):
C:=animate(plot, [1-x, x=-1..a, color=blue, thickness=2], a=-1..1):
display([A, display(op([1,-1,1],A),B), display(op([1,-1,1],A),op([1,-1,1],B),C)], insequence, scaling=constrained);

                

See this post   https://mapleprimes.com/posts/207840-Combinations-Of-Multiple-Animations

Edit.

 


 

NULL

restart

n := 4; C := [seq(cos(2*Pi*K*l/n), l = 0 .. n-1)]; S := [seq(sin(2*Pi*K*l/n), l = 0 .. n-1)]

[1, cos((1/2)*Pi*K), cos(Pi*K), cos((3/2)*Pi*K)]

 

[0, sin((1/2)*Pi*K), sin(Pi*K), sin((3/2)*Pi*K)]

(1)

a := true; for c in C do for s in S do if int(c*s, K = -Pi .. Pi) <> 0 then a := false; break end if end do end do; a

true

(2)

NULL

NULL


 

Download orthogonal-new1.mw

 I think the easiest way to create the same animation is the using a procedure that creates an one frame, and then using the plots:-animate command:

restart;

OneFrame:=proc(a)
local f, Point, Points1, Points2, Curve;
uses plots;
f:=x->x^2-x+2;
Point:=plot([[2,f(2)]],style=point, color=black, symbol=solidcircle, symbolsize=30);
Points1:=plot([[2-a,f(2-a)],[2+a,f(2+a)]], x=-3..5, style=point, color=red, symbol=solidbox, symbolsize=30);
Points2:=plot([[2-a,0],[2+a,0],[0,f(2-a)],[0,f(2+a)]], x=-3..5, style=point, color=red, symbol=diamond, symbolsize=30);
Curve:=plot(f, -3..5, 0..8, color=blue, thickness=3);
display(Point,Points1,Points2,Curve, gridlines, scaling=constrained);
end proc:

plots:-animate(OneFrame, [a], a=1..0.05);

          

 

This can be done in many ways. Here is a simple procedure with a for-loop that solves the problem:

P:=proc(A::Matrix, j::posint, a::numeric)
local i, m, n;
m,n:=upperbound(A);
for i from 1 to m do
if A[i,j]>a then return i fi;
od;
end proc:

Example:
A:=<1,2,1.1; 3,4,2.1; 5,6,3.1>;
P(A,3,2);

To draw this circle centered at point  H  and radius  R , you do not need to know any angles. Simply write the appropriate parametric equations and use  plot3d  command:

restart; 
with(geom3d):
 a := 3:
 b := 4:
 h := 5:
 point(A, 0, 0, 0):
 point(B, a, 0, 0):
 point(C, a, b, 0):
 point(DD, 0, b, 0):
 point(S, 0, 0, h):
 sphere(s, [A, B, C, S], [x,y,z], 'centername' = m); 
detail(s); 
plane(p, [S, A, B], [x, y, z]); 
n:=coordinates(projection(H, m, p)); 
R := distance(H, S);
S1:=plot3d(n+r*~([cos(t),0,sin(t)]), r=0..R, t=0..2*Pi, style=surface,  color=pink):
S2:=plots:-spacecurve(n+[R*cos(t),0,R*sin(t)], t=0..2*Pi, color="VioletRed", thickness=2):
S3:=plottools:-sphere([3/2, 2, 5/2], 5*sqrt(2)*(1/2), color="LightGreen", transparency=0.7):
plots:-display(S1,S2,S3, axes=normal, orientation=[20,70], lightmodel=light1);

             

 

First 79 80 81 82 83 84 85 Last Page 81 of 290