Exam solutions

There are many ways to solve all the problems. Note questions 8 and 9 are intentionally harder!

Question 1

a:=x^3+2*x^2+3*x-6;
b:=x^3+3*x^2+7*x+5;
f:=a/b;
solve(a=0,x);
solve(b=0,x);
solve(diff(f,x)=0,x);   

the problem is that solve might not work. if so, use 
fsolve(a=0,x); (or fsolve(a=0,x,complex); to find also
complex roots). Similarly for the other equations.  

Question 2

create the following m-file:

targ2.m
-------
function z=targ2(x,y)
z=zeros(size(x));
for i=1:size(x,1)
  for j=1:size(x,2)
    if (x(i,j)>0 & y>0 & x(i,j)^4+y^2<1)
       z(i,j)=(x(i,j)+y)/(1+x(i,j)^2+y^2);
    end
  end
end

then run the following command:

dblquad(@targ2,0,1,0,1)

Question 3

with(LinearAlgebra)
m:=<<1,2>|<2,t>>;
e:=Eigenvalues(m);
plot( {e[1],e[2]}, t=-5..5);

Question 4

t=[-5:0.1:5];
for i=1:size(t,2)
     m(:,i)=eig([1,2;2,t(i)]);
end 
hold on
plot(t,m(1,:))
plot(t,m(2,:))

Question 5

with(LinearAlgebra):
c:=cos(sqrt(1+t^2));
s:=sin(sqrt(1+t^2));
g:=<<c,-s>|<s,c>>;
h:=Matrix(2);
for i from 1 to 2 do
for j from 1 to 2 do
   h[i,j]:=diff(g[i,j],t);
end do:
end do:
evalf(int( Trace(g.h.g.h), t=0..1));

Question 6

create the following m-file:

a6.m
----
function y=a6(x,p)
     y=x^2/2+1-cos(x)+1/(1+p*x^2);

then run the following commands:

p=[1:0.01:2];
for i=1:101
     [y,q(i)]=fminsearch(@a6,0,[],p(i));
end
plot(p,q)

Question 7

with(LinearAlgebra);
M:=<< 1,-2,-4 >|< s,t,u>|<-2,2,-3>> ;
cp:=CharacteristicPolynomial(M,lambda);
solve({subs(lambda=1,cp)=0,subs(lambda=2,cp)=0,subs(lambda=3,cp)=0},{s,t,u});

with(LinearAlgebra);
M:=<< 1,-2,-4 >|< s,2,4>|<-2,2,-3>> ;
s0:=solve( Determinant(M)=0, s);
N:=subs(s=s0,M);
cs:=ColumnSpace(N);
take c in the column space (for example c:=op(1,cs))
and  b not in the column space

Question 8

function ans2(c,d)

as=roots(d);

a=-10;   % can use -Inf 
b=10;    % can use Inf 
for i=1:size(as,1)
  if imag(as(i))==0
    if (as(i)<0 & as(i)>a)
        a=as(i);
    end
    if (as(i)>0 & as(i)<b)
        b=as(i);
    end
  end
end

a  % the largest negative asymptote
b  % the smallest positive asymptote

% plotting the graph - 50 points
h=(b-a)/51;
x=a+[1:50]*h;
deno=0;
for i=1:size(d,2)
     deno=deno.*x+d(i)*ones(1,50);
end 
nume=0;
for i=1:size(c,2)
     nume=nume.*x+c(i)*ones(1,50);
end 
plot(x, nume./deno)

% must be careful there could be an asymptote at 0
% it is better to check this by looking whether d(m)==0

% to find  the critical points - A simple way is to  locate them 
% on the graph and then use fminsearch. Or it is possible to 
% compute the coefficients of c'd-d'c and then use "roots".

Question 9

with(LinearAlgebra):

ccl:=proc(a,b,c,d)
local M;
M:=<b-a|c-a|d-a>;
if (Determinant(M)=0) then return(1) else return(0) end if;
end proc;

ccc:=proc(a,b,c,d)
local z1,z2,z3,z4,cr;
z1:=a[1]+I*a[2];
z2:=b[1]+I*b[2];
z3:=c[1]+I*c[2];
z4:=d[1]+I*d[2];
cr:=(z1-z2)*(z3-z4)/(z1-z4)/(z3-z2);
if (Im(cr)=0) then return(1) else return(0) end if;
end proc;

% putting them together: the a,b,c,d of the first program
% are 3-dimensional, in the second program they are 2-dim.
% here is a way to do it, without explanation:
cc:=proc(a,b,c,d)
local v,v1,v2,A,B,C,D;
if (cc1(a,b,c,d)=0) then return(0) 
else v1:=(b-a)/Norm(b-a,2);   
     v:=(c-a)-((c-a).v1)*v1; 
     v2:=v/Norm(v,2);
     A:=<0,0>;
     B:=<(b-a).v1,(b-a).v2>;
     C:=<(c-a).v1,(c-a).v2>;
     D:=<(d-a).v1,(d-a).v2>;
     if (ccc(A,B,C,D)=0) then return(0) 
        else return(1);
     end if;
end if;
end proc;

Back to course homepage
Back to my main teaching page
Back to my main page