1. Produce a plot of sin(x) versus x in blue and cos(x) versus x in red for 100 evenly spaced points between 0 and 2pi. Label the axes.
x = linspace(0,2*pi, 100); plot(x, sin(x), 'b', x, cos(x), 'r'); xlabel('x') legend('sin x', 'cos x') % makes more sense than a ylabel, but you could do that, too
2. Given matrix A, set v to the jth column of A.
v = A(:,j);
3. Given matrix A, set v to the ith row of A.
v = A(i,:);
4. Suppose matrix A has M rows and N cols. Set B to A with its columns in reversed order.
B = A(:,N:-1:1);
5. Solve the system of equations
2y - x = 1 3y + 2z = 5 -3x + z = -2
A = [-1 2 0 ; 0 3 2 ; -3 0 1]; b = [1 ; 5 ; -2]; x = A\b;
6. Produce a vector of 100 random floating-point numbers between 0 and 10.
rand(100,1)
7. Produce a vector of 100 random integers between 0 and 10.
randi(11, 100, 1) - 1
8. Produce a random permutation of the integers between 1 and 10.
randperm(10)
9. Produce a random permutation of the vector v = [3 3 4 5 7];
v = [3 3 4 5 7]; % no problem if you assume v is already set v(randperm(5))
10. Produce all permutations of the vector v = [3 3 4 5 7];
perms(v)
11. Produce a quiver plot of the vector field where
,
, and x and y range from -pi to pi. Label the axes.
x = linspace(-pi, pi, 30); y = linspace(-pi, pi, 30); [X, Y] = meshgrid(x,y); Vx = sin(X) .* cos(Y); Vy = X .* Y; quiver(X, Y, Vx, Vy); xlabel('x'); ylabel('y');
12. Produce a contour plot of
where x and y range from -10 to 10. Label the axes.
x = linspace(-10, 10, 50); y = linspace(-10, 10, 50); [X, Y] = meshgrid(x,y); R2 = X.^2 + Y.^2; F = sin(R2) ./ sqrt(R2); contour(X, Y, F); xlabel('x'); ylabel('y');
(Comment: I meant to set ,
which makes a prettier plot.)
13. Produce a 3d surface plot of the function from problem 12 over the same range, and with a color bar. Label the axes.
surf(X, Y, F); colorbar; xlabel('x'); ylabel('y');
14. Write down the connectivity matrix C for the links in this small network of websites.
% C((i,j) = 1 if i -> j, 0 otherwise
C = [ 0 1 0 0 0 0 ; 0 0 0 0 1 1 ; 1 1 0 0 0 0 ; 0 0 1 0 0 1 ; 1 0 0 1 0 0 ; 0 0 1 0 0 0 ];
15. Write Matlab code that converts the connectivity matrix C to a transition matrix T that governs the transition of probabilities under random surfing.
T = C; for j = 1:6; T(:,j) = T(:,j)/sum(T(:,j)); end
16. Given T, write Matlab code that computes the vector of
probabilities
that you'll end up at website
after a
long night of random websurfing.
x = [1 0 0 0 0 0]; % start with probability 1 at page 1, 0 elsewhere N = 10000; % or another large number x = T^N * x; % x(j) = probability of landing at page j after N random clicks
17. Write an equation for y as a function of x for
the following data plot. Bonus: express exponential functions
as powers of e rather than powers of 10. Use
to convert between the two.
We have a straight line with logarithmic axis and a linear
axis,
so the equation will be of the form
or
. Determine
from rise over run from
to
.
Determine from value of
at
. That gives
. So answer is
Bonus: express exponential functions as powers of rather than powers of 10.
Use
to convert between the two.
so
18. How would you graph the function , in a way that highlights
this functional relationship? I.e. given vectors
and
satisfying
, what Matlab command should you use to plot
versus
?
loglog(x,y)
19. How would you graph the function , in a way that highlights
this functional relationship?
semilogy(x,y)
20. Write an anonymous function that returns the square of its input.
f = @(x) x^2;
21. Write an anonymous function that, for an input vector
returns the output vector
f = @(x) [4*x(1)*x(2), sin(x(1))* cos(x(2))];
22. Convert the following 2nd order ODE to a 1st order system of ODE in two variables.
Let . Then
So
22. Show how to integrate the system of ODEs from problem 22 from t = 0 to 10 using the initial condition x(0) = 0, dx/dt(0) = 1. Write the ODE system in Matlab using an anonymous function.
f = @(t,v) [v(2) ; -3*v(2) - sin(v(1))]; [t,v] = ode45(f, 0:0.1:10, [0 ; 1]);
23. Compute the terminal velocity of a ping-pong ball dropped from a great height, using this system of equations
where ,
represents the vertical position, and
represents the vertical velocity. Represent the two free variables
with the vector
and reexpress the two equations above as
an ODE system of the form
(both sides of that equation are vectors).
So
Write an anonymous function in Matlab that computes for an input vector
,
and then use ode45 to integrate this system from
to
from the initial conditions
.
g = 9.81; mu = 0.35; f = @(x) [x(2) ; -g - mu*x(2)*abs(x(2)]; [t, X] = ode45(f, 0:100, [0 ; 0]);
24. Plot the position of the ping-pong ball as a function of time. Label the axes.
plot(t, X(:,1)) % first column of returned X is 1st component of x as a function of time xlabel('t') ylabel('y = height of ball')
25. Write a function that performs matrix-vector multiplication for a sparse matrix A, that accesses only nonzero elements of A.
For an M x N matrix A and an N-dimensional vector x,
the matrix-vector product is defined by
for each component of the M dimensional vector
. But don't code that
formula directly! Instead start your function with
K = nnz(A); [i,j,a] = find(A);
and write the matrix-vector multiplication as a loop over the K nonzero elements of A.
function y = sparse_matvec_mult(A,x) K = nnz(A); [i,j,a] = find(A); [M,N] = size(A); y = zeros(M,1); % set y to M-dim col vector for k=1:K; y(i(k)) = y(i(k)) + a(k)*x(j(k)); end end