Kitonum

21840 Reputation

26 Badges

17 years, 225 days

MaplePrimes Activity


These are answers submitted by Kitonum

The simple  Sylvester  procedure gives a direct solution to the problem of the type of definiteness of a symmetric square matrix by applying the Sylvester's criterion for all possible cases:

Sylvester:=proc(A)
local n, L1, L2;
uses LinearAlgebra, combinat:
n:=Dimension(A)[1];
L1:=[seq([$1..k], k=1..n)];
if `and`(seq(`if`(Determinant(A[k,k])>0,true,false), k=L1)) then return `Positive definite` else
if `and`(seq(`if`((-1)^nops(k)*Determinant(A[k,k])>0,true,false), k=L1)) then return `Negative definite` else
L2:=subsop(1=NULL, powerset([$1..n]));
if `and`(seq(`if`(Determinant(A[k,k])>=0,true,false), k=L2)) then return  `Positive semidefinite` else
if `and`(seq(`if`((-1)^nops(k)*Determinant(A[k,k])>=0,true,false), k=L2)) then return  `Negative semidefinite` else
`Indefinite` fi; fi; fi; fi;
end proc:


Examples of use:

Sylvester(<-1,2; 2,-5>);
                       Negative definite

Sylvester(<1,2; 2,3>);
                           Indefinite

Sylvester(<-5, 0, 0; 0, 0, 0; 0, 0, -1>);
                     Negative semidefinite

 

Use  is  command for this:

is(1000 < 5^(1/2));
                                    false

In Maple the number pi should be coded as  Pi  rather than pi . For numeric value use  evalf  command:

cos(Pi/2);
evalf[5](Pi);  
# Pi with 5 digits

                               0
                           3.1416
 

 

You have a space after  solve  command, which Maple in 2d math interprets as multiplication. Remove it and everything will work:

solve(arctan((2*x^2-1)/(2*x^2+1)) = 0, x);

                                         (1/2)*sqrt(2), -(1/2)*sqrt(2)

A little shorter:

e1_1:=-gamma*r*theta/(w*beta*(theta-1));
subs(1/(theta-1)=-1/(1-theta), e1_1);

                        

or even shorter:

subs(theta-1=-``(1-theta), e1_1);

 

Edit.

A:=[<5,5,5>, <1,2,3>, <-5,1,2>];
LinearAlgebra:-Basis(A);

You can calculate this double integral by writing it as an iterated one:

restart;
with(Student[Calculus1]):
a := Int(Int(exp(cos(x)), y = 0 .. sin(x)), x = 0 .. (1/2)*Pi) ;
ShowSolution(a);

                

 

 

Or

sol:=dsolve(diff(y(x),x)= x/(sqrt(x^2-16))*1/(2*y(x)), implicit);
applyop(simplify, [1, 2], %);
solve(%, y(x));


or

sol:=dsolve(diff(y(x),x)= x/(sqrt(x^2-16))*1/(2*y(x)), implicit);
evalindets(%, `*`, simplify);
solve(%, y(x));

or

sol:=dsolve(diff(y(x),x)= x/(sqrt(x^2-16))*1/(2*y(x)), implicit);
solve(map(simplify, lhs(%)), y(x));

 

The procedure classifies the terms of an arbitrary multivariate polynomial with numeric coefficients according to the indicated characteristics:

ClassTerms:=proc(P)
local S, C, t, T, Terms, Tp, Tn, Tind;
S:=indets(P);
C:=[coeffs(P,S,'t')];
T:=[t];
Terms:=convert(zip(`[]`,C,T),set);
Tp:=select(p->p[1]>0 and `and`(seq(type(degree(p[2],s),even), s=S)), Terms);
Tn:=select(p->p[1]<0 and `and`(seq(type(degree(p[2],s),even), s=S)), Terms minus Tp);
Tind:=Terms minus `union`(Tp,Tn);
print(P_positive={seq(p[1]*p[2],p=Tp)});
print(P_negative={seq(p[1]*p[2],p=Tn)});
print(P_indeterminate={seq(p[1]*p[2],p=Tind)});
end proc:



Example of use:

P:=randpoly([x,y,z], dense, degree = 4);

ClassTerms(P);

 

ClassTerms.mw

If the function is linear, then you can delete this option in your code or do not use it at all if you make a linearity check as follows:

type(a*x+b*y+c, linear(x, y));
                              true 

type(a*x^2+b*y+c, linear(x, y));

                              false

                              
 

Do

labels=[z,`&Delta;z`/`&Delta;t`]
 

See the toy example:

f:=x[1]->x[1]^2;



whattype(x[1]);

                       indexed


A workaround:

f:=x1 -> x1^2;  # Or
f:=x__1 -> x__1^2;

                            

Two triangles  ABC  and  A'B'C'  are similar. The first triangle can be obtained from the second one by successive transformations: rotation, translation and stretching. Animation of this:
restart;
with(plots): with(plottools):
T1:=display(polygon([[-6,0],[32/3,0],[0,8]],color=cyan), textplot([[-6,0,A],[32/3,0,C],[0,8,B]], font=[times,bold,18], align=right), scaling=constrained, axes=none):
T2:=display(polygon([[14,0],[17,0],[17,-4]],color=yellow), textplot([[14,0,"A'"],[17,0,"B'"],[17,-4,"C'"]], font=[times,bold,18], align=right), scaling=constrained, axes=none):
f:=(p,phi)->rotate(p,phi,[14,0]):
An1:=animate(display,[f(T2,phi)],phi=0..arctan(4/3), background=T1):
T3:=f(T2,arctan(4/3)):
g:=(p,h)->translate(p,h,0):
An2:=animate(display,[g(T3,h)],h=0..-15.8, background=T1):
T4:=g(T3,-15.8,0):
h:=(p,k)->homothety(p,k):
An3:=animate(display,['h'(T4,k)],k=1..10/3, background=T1):
display([An1,An2,An3], insequence=true, size=[800,800]);


 

Example:

sol:=RootFinding:-Isolate(x^4-3*x^2+2);
eval(x, sol[1]);  
# The first root

In your for loop  m  should be a numeric not a symbol.
In addition, if you want to refer to the entries of your matrix 2 by 2 in a for loop, then use a nested loop:
...
for i from 1 to 2 do
for j from 1 to 2 do
...

First 154 155 156 157 158 159 160 Last Page 156 of 292