Kitonum

21440 Reputation

26 Badges

17 years, 37 days

MaplePrimes Activity


These are answers submitted by Kitonum

DeleteZeroLines:=proc(A::Matrix)
local m, n, ZR, L1, B, m1, ZC, L2;
uses LinearAlgebra;
m, n:=op(1, A);
ZR:=ZeroVector[row](n);
L1:=[seq(`if`(Equal(A[i], ZR), i, NULL), i=1..m)];
B:=DeleteRow(A, L1);
m1:=op([1,1], B);
ZC:=ZeroVector(m1);
L2:=[seq(`if`(Equal(B[..,i], ZC), i, NULL), i=1..n)];
DeleteColumn(B, L2);
end proc:


Example of use:

A:=RandomMatrix(8, 10, density = 0.1, generator = 1..9);
DeleteZeroLines(A);

                        

DeleteZeroLines.mw

Of course, this conversion can be done by direct calculation (without  convert  command):

z := arctan(x/sqrt(a^2-x^2)):
t:=op(1,z):
simplify(arcsin(t/sqrt(1+t^2)))  assuming a>0, x^2<a^2;

                                            arcsin(x/a)

convert((t-1)/(-1+2*t), parfrac);

                                 1/2-1/(2*(-1+2*t))

Replace the comma after  l2c2:=0  with a colon:

l2c1:= 2*k:  l2c2:=0:  l2c3:=8-k:
plots:-spacecurve([l2c1, l2c2, l2c3], k=-10..10, color=red);

A procedure for this:

restart;
MakeColored:=(s,c)->Typesetting:-mo(convert(s,string), mathcolor = c):


Examples of use:

x:=MakeColored(x, "Red"):
y:=MakeColored(y, "Blue"):
z:=MakeColored(z, "Green"):
x, y, z;
(x+y)/(x-z);

                          


See these threads for details:

http://www.mapleprimes.com/questions/203931-Print-Hello-In-Green

http://www.mapleprimes.com/questions/126174-How-Do-You-Color-Text-Output-From-Command-Line

 

Edit.

 

I think that this is the case when it is easier to solve by hand, because it is easy to express exp(x) rationally through tanh(x/2). If you need to perform a similar conversion more than once, the procedure called  Convert  will be useful. It converts any occurrence of  exp  function into  tanh  function:

restart;
Convert:=proc(Expr)
local A;
convert(tanh(z), exp);
combine(normal(subs(exp(-z)=1/exp(z), %)));
solve(%=tanh(z), exp(2*z));
A:=subs(z=z/2, %);
simplify(applyrule(exp(z::anything)=A, Expr));
end proc:


Examples of use:

Convert(exp(x));
Expr:=-(exp(-a*s)-1)*kw/((exp(-a*s)+1)*s^2);
Convert(Expr);  
# The initial example


 

Maple uses radians by default, so should be Pi/2 instead of 90.

 

Output := Array(-10 .. 10, -10 .. 10, (i, j)->i^2+j^2):
M:=convert(Output, listlist):
plots:-listcontplot(M, axes=none);

lambda:=2.6:
fsolve(sum(lambda^k*exp(-lambda)/k!, k=0..n)=0.95);

                                  4.980237188

Example:

restart;
sol:=solve({x-2*y=5, x+3*y=1});
eval(x, sol);  
# The first way
eval(y, sol);
assign(sol);  
# The second way
x, y;

                        

If you need decimals, use  fsolve  instead of  solve.

Temporarily replace symbols by unique numeric constants.

Example:
P:=a*x^5+a*y^5-b*x*y+c:
Q:=subs([a=Pi, b=exp(1), c=gamma], P);
convert(Q, elsymfun);
subs([Pi=a, exp(1)=b, gamma=c], %);

                           

I did not understand how you define matrix  A  for your example, I used  rand  command for this.

restart;
lavplot := proc() 
local i, j, feltfarver, points, colors, x, y; 
global A;
uses LinearAlgebra, plots; 
x := ColumnDimension(A); 
y := RowDimension(A); 
points := []; 
feltfarver := [blue, green, "PeachPuff", "DarkGreen", "Gold", "Silver", "Chocolate", yellow]; 
colors := []; 
for i to y do 
for j to `if`(i::odd, x, x-1) do 
if A[i, j] <> 0 then points := [op(points), [`if`(i::odd, j, j+1/2), (x+1-i)*sqrt(3)/2]]; colors := [op(colors), feltfarver[A[i, j]]] end if; 
end do; end do; 
pointplot(points, symbol = solidcircle, color = colors, symbolsize = 60, axes = none, scaling=constrained); 
end proc:


Example of use:

r := rand(1 .. 8): 
A := Matrix(7, 10, (i, j)->r()); 
lavplot();

                               

 

Edit.

The same problem can easily be solved with the help of  plots:-animate  command. This is more convenient, because it allows you to easily adjust the number of frames and the step of the animation. In the animation panel, you can see the same slider, and you can also sequentially output frames one by one in any direction. For example, below we choose the range for the parameter a = -2..2  and animation's step=0.1 and then we have to take the number of frames  (2-(-2))/0.1+1=41

restart:
with(plots):
animate(inequal,[{x>0,x>2*(y-a-1),y>x+a-1}, x=-1..4, y=-3..5, scaling=constrained], a=-2..2, frames=41);


 

Clearly, the solution is the interior of a triangle as the intersection of three half-planes. In the system, I removed the inequality  x+a+1>y, because for x>0 we have  x>2*(y-a-1) => x+a+1>y

Edit.

I do not know of a simple method that would lead to the result as in a textbook (or a close result). Here is a way (partially manual), which in 3 steps gives the result almost as in a textbook:

A:=int(x*sqrt(a*x^2+b*x+c), x);

B:=simplify(A, symbolic); # First step
C:=`*`(op(1..2,B))*map(normal,`+`(op([3,1..2],B))); # Second step
`*`(op(1..2,C))/(-12)*``(op(3,C)*(-12));  # Result

The result:

For details on numerical integration see Help  ?evalf/int

First 150 151 152 153 154 155 156 Last Page 152 of 289