This handout uses examples from the course MCS 320: Introduction to Symbolic Computation by UIC
restart; sq := seq(x[i],i=1..10);
L := map(x -> x^3,[sq]);
p := convert(L,`+`);
op(x[2]^3);
op(1,x[2]^3);
whattype(op(1,x[2]^3));
op(op(1,x[2]^3));
op([1,1],x[2]^3);
select(t -> op([1,1],t) > 5,p);
remove(t -> op([1,1],t) > 5,p);
q := map(t -> t^(op([1,1],t)),p);
select(t -> degree(t)>10,q);
newtonstep := proc(f::procedure)
description `returns one step with Newton's method on f`;
local ix;
ix := x -> x;
ix - eval(f)/D(eval(f));
end proc;
g := x -> cos(x) - 1/2;
gstep := newtonstep(g);
gstep(x);
gstep(0.3);
y := 0.4;
Digits := 32;
for i from 1 to 7 do
y := gstep(y);
end do;
evalf(y - Pi/3);
log(10.0);
log[10](10.0);
interface(verboseproc=3);
print(log);
cool := proc(t)
description `model of cooling off process`;
local b;
if type(procname,'indexed')
then b := op(procname);
else b := 30;
end if;
return b + 40*exp(-0.2*t);
end proc;
cool(1.5); cool[50](1.5);
fib := proc(n::nonnegint)
description `Fibonacci numbers`;
if n = 0 then
return 0;
elif n = 1 then
return 1;
else
return fib(n-1) + fib(n-2);
end if;
end proc;
for i from 1 to 10 do
fib(i);
end do;
starttime := time(): fib(30); elapsed := (time()-starttime)*seconds;
restart; newfib := proc(n::nonnegint)
description `Fibonacci numbers with remember table`;
option remember;
if n = 0 then
return 0;
elif n = 1 then
return 1;
else
return newfib(n-1) + newfib(n-2);
end if;
end proc;
starttime := time(): newfib(30); elapsed := (time()-starttime)*seconds;
newfib(100);
op(eval(newfib));
T := op(4,eval(newfib));
newfib(101);
eval(T);
T[100];
T[100] := 1;
newfib(101);
newfib(99);
newfib(100);
forget(newfib);
op(eval(newfib));
newfib(100);
op(eval(newfib));
diff(cos(x)+sin(x),x);
op(eval(diff));
T := op(4,eval(diff));
T[(cos(x),x)] := sin(x);
diff(cos(x),x);
T[(cos(x),x)] := 'T[(cos(x),x)]';
eval(T);
diff(cos(x),x);
eval(T);
restart; Exint := Int(exp(a*t),t=0..infinity);
exint := value(Exint);
assume(a > 0);
exint;
assume(a < 0);
exint;
a;
about(a);
additionally(a<-2);
about(a);
min(a, 2, cos(b));
assume(n,odd); assume(m,odd);
is(n+2,odd);
is(n^2,odd);
is(n^2+m,odd);
is(n^2+a,odd);
is(n^2+b,odd);
a := evaln(a);
about(a);
restart; constants;
constants := constants, y;
D(f);
D(y);
diff(sin(x)+y, x);
diff(y(x), x);
y := 4;
constants;
y := x;
constants;
restart; constants;
assume(y, constant);
constants;
about(y);
diff(sin(x)+y, x);
restart; is(cos(a+b) = cos(a)*cos(b)-sin(a)*sin(b));
evalb(a = a);
evalb(cos(a+b) = cos(a)*cos(b)-sin(a)*sin(b));
expression := exp(x+y) + sin(x+y);
e := expand(expression);
e1 := expand(expression^2);
e2 := frontend(expand,[expression^2]);
combine(e);
combine(e1);
combine(e2);
el := ln(x*y);
expand(el);
assume(x>0,y>0);
expand(el);
x := 'x'; y := 'y';
expand(el);
expand(ln(x*y)) assuming x>0,y>0;
combine(ln(x) + ln(y));
combine(ln(x) + ln(y)) assuming x > 0, y > 0;
combine(ln(x) + ln(y),symbolic);
expand(el, symbolic);
expr1 := (cos(x))^3*(sin(3*x))^2;
expr2 := expand(expr1);
expr3 := combine(expr1);
expr4 := expand(expr3);
is(expr1 = expr4);
testeq(expr1,expr4);
is(expr2 = expr4);
testeq(expr2,expr4);
restart; expression := exp(x)*exp(y) + sin(x)^2 + cos(x)^2;
simplify(expression,trig);
simplify(expression,exp);
simplify(expression,exp,trig);
simplify(expression);
sqrtx2 := sqrt(x^2);
simplify(sqrtx2);
simplify(sqrtx2,symbolic);
sc := sin(x)*cos(y);
expsc := convert(sc,exp);
simplify(expsc);
convert(expsc,trig);
trigsubs(0);
suggestions := trigsubs(sin(x+y));
suggestions[1] = suggestions[6];
subs(%,(sin(x+y))^2);
simplify(x^3 + y^3,{x^2 + y^2 = 1});
solve(2*x^2-3*x+1);
isolve(2*x^2-3*x+1);
restart; rsolve({f(n+1) = f(n) + f(n-1),f(0)=0,f(1)=1},f(n));
equ := a^2*(x^2 + x + 1) - a*(2*x - 3) - x^2 -3*x+2;
solve(equ);
sols := solve(equ,x);
equ1 := subs(a=1,equ);
solve(equ1,x);
collect(equ,x);
subs(a=-1,equ);
solve(equ,a);
eq := x = cos(x);
s := solve(eq,x);
evalf(s);
fsolve(eq,x);
eq := sin(x) - 1/2;
solve(eq,x);
_EnvAllSolutions := true;
sols := solve(eq,x);
about(_B1)
about(_Z1)
family := (b,k) -> subs(_B1=b,_Z1=k,sols);
family(1,3);
sin(%);
eqn := (sin(x)^3 - 3*sin(x) + 1 = 3);
solve(eqn,x);
evalf(arcsin(2));
solve(eqn,sin(x));
expand((sin(x)-2)*(sin(x)+1)^2);
sys := {a[1,1]*x[1]+a[1,2]*x[2] = b[1],
a[2,1]*x[1]+a[2,2]*x[2] = b[2]};
solve(sys,{x[1],x[2]});
sys := {a[1,1]*x[1]+a[1,2]*x[2]+a[1,3]*x[3] = b[1],
a[2,1]*x[1]+a[2,2]*x[2]+a[2,3]*x[3] = b[2],
a[3,1]*x[1]+a[3,2]*x[2]+a[3,3]*x[3] = b[3]};
solve(sys,{x[1],x[2],x[3]});
p1 := x^2 + x^3 - y^2;
p2 := (x-1)^2 + y^2 - 1;
sys := [p1,p2];
with(plots);
plot1 := implicitplot(p1,x=-2..2,y=-2..2,color=red):
plot2 := implicitplot(p2,x=-2..2,y=-2..2,color=green):
display(plot1,plot2,scaling=constrained);
solve(sys,[x,y]);
with(Groebner);
gb := Basis(sys,plex(x,y));
sy := solve(gb[1],y);
evalf(sy);
eq2 := seq(subs(y=sy[k],gb[2]),k=1..nops([sy]));
sx := map(eqx->solve(eqx,x),[eq2]);
sols := zip((x,y)->[x,y],sx,[sy]);
evalf(sols);
f := x^2 + 2*x*y*z - z^2;
g := x^2 + y^2 + z^2 - 1;
sys := {diff(f,x) - lambda*diff(g,x),
diff(f,y) - lambda*diff(g,y),
diff(f,z) - lambda*diff(g,z), g };
solve(sys,{x,y,z,lambda})
gb := Basis(sys,plex(x,y,z,lambda));
gb[1];
L := solve(gb[1],lambda);
for i from 1 to nops([L]) do
eqs := subs(lambda=L[i],gb);
solve(eqs, {x,y,z});
end do;