For each of the following, provide an answer in Matlab-digestable syntax 1. Assign the value 0.00014 to the variable //x//, using compact scientific notation. x = 1.4e-04 2. Set the variable //x// to a vector whose components are the even numbers between 14 and 36. x = 14:36 3. Set the variable //x// to 200 evenly spaced points between 0 and 2. x = linspace(0, 2, 200) 4. Produce a plot of //y = x^2 - 2x + 3// for the //x// of the previous problem. Label the axes. plot(x, x.^2 - 2x + 3); xlabel('x'); ylabel('x^2 - 2x + 3'); Note: We have to use ''x.^2'' rather than ''x^2'' to get the square of //each component// of the vector ''x''. 5. Plot //tan(x)// versus //x// for 200 evenly spaced points between 0 and 1.57 ≈ pi/2, using a logarithmic scale on the //y// axis. x = linspace(0, 1.57, 200); semilogy(x, tan(x)); xlabel('x'); ylabel('tan(x)'); 6. Plot //sin(x)// and //cos(x)// for 200 evenly spaced points between -π and π, on the same plot, using red for //sin(x)// and blue for //cos(x)//. Add a legend that indicates which function is which color. x = linspace(-pi, pi, 200); plot(x, sin(x), 'r', x, cos(x), 'b'); legend('sin(x)', 'cos(x)'); xlabel('x') 7. Produce a vector of length 13 whose components are random integers between 0 and 10, inclusive. randi(10, 1, 13) 8. Produce a vector of length 13 whose components are random real numbers between 0 and 10, inclusive. 10*rand(1, 13) 9. Show how you would solve the following system of equations with Matlab x + 2y - z = 5 3x + y + 6z = 37 -3x + y + 2z = -11 A = [1 2 -1; 3 1 6; -3 1 2]; b = [5; 37; -11]; x = A\b 10. Write a conditional expression that is true if scalar variables //x// and //y// are both nonzero and false otherwise. x ~= 0 && y ~= 0 11. Set variable //A// to a 3 x 5 matrix of zeros. A = zeros(3,5) 12. Set variable //A// to a 4 x 7 matrix of random real numbers, using a guassian (normal) distribution. A = randn(4,7) 13. Write a conditional expression that is true if a matrix //A// is square and false otherwise. dim(A,1) == dim(A,2) % a one-liner, but maybe you don't know dim works this way or [M, N] = size(A) M == N 14. Write a conditional expression that is true if either //x// or //y// is an integer. x == round(x) || y == round(y) Write a Matlab function that 15. returns 1 (true) if its argument is divisible by 3 and 0 (false) if it's not. function r = divisiblebythree(n) % divisiblebythree(n) : return 1 if n is divisible by 3 or 0 if it's not r = 3*round(n/3) == n end 16. takes a vector //x// as input and returns 1 if the components of //x// are sorted in ascending order, 0 if not. function s = sorttest(x) % return 1 if x is sorted in ascending order, 0 if not N = length(x); % count how many of {x(1) through x(N-1)} are less than {x(2) through x(N)} % the count will be N-1 if the x is sorted in ascending order s = sum(x(1:N-1) < x(2:N)) == N-1 end 17. computes the product //y = Ax// of an //M x N// matrix //A// and an //N x 1// vector //x//, according the formula y_i = \sum_{j=1}^N A_{ij} x_j function y = matvecmult(A,x); % matvecmult: compute matrix-vector multiplication A x [M,N] = size(A); % M x N matrix times N-vector equals an M-vector y = zeros(M,1); % evaluate formula for ith component of y for i=1:M % evaluate y_i = sum_{j=1}^n A_ij x_j for j=1:N y(i) = y(i) + A(i,j)*x(j); end end end **A few more problems, added 1/14/2013** 18. Set vector v to the 3rd column of matrix A. v = A(:,3); 19. Set vector v to the 4th row of matrix A. v = A(4,:); 20. Set vector v to the first 3 entries in the 7th row of A. v = A(7,1:3); 21. Set the 4th row of the 8 x 5 matrix A to (1, 2, 9, 5, 0). A(4,:) = [1 2 9 5 0]; 22. Set the 2nd column of the 4 x 3 matrix A to a column vector with entries (3, 0, -1, 5). A(:,2) = [3; 0; -1; 5]; or A(:,2) = [3 0 -1 5]'; 23. Zero all the entries in the last column of a matrix A. [M,N] = size(A); A(:,N) = zeros(M,1); 24. Produce a contour plot of $f(x,y) = \sin(x^2+y^2)/\sqrt{x^2 + y^2}$ where //x// and //y// range from -10 to 10. Label the axes. N = length(x); F = zeros(N,N); for i=1:N; for j=1:N; r = x(i)^2 + y(j)^2; F(i,j) = sin(r)/sqrt(r); end end % plot matrix with contour contour(x,y,F); xlabel('x'); ylabel('y'); % problem didn't ask for these, but they make the plot nicer title('sin(x^2 + y^2)/sqrt(x^2 + y^2)') axis equal axis tight ---- **A few more problems, added late 10/14/2013**. You don't have to turn these in, but they are fair game for the exam. I will add more example problems over the next few days. 25. Write an expression that returns the positive elements of a vector v. v(v>0) 26. Write an expression that returns the sum of the positive elements of a vector v. sum(v(v>0)) 27. Write an expression that returns the number of positive elements in a vector v. sum(v>0) ** Even more practice problems! Hooray! added 10/22/3013 ** 28. Write a function that computes the factorial of an integer n using a ''while'' loop. function f = factorial2(n) % factorial2: compute n! f = 1; while (n>1); f = f*n; n = n-1; end end 29. Write an ''isPrime(n)'' function that returns 1 (true) is n is prime and 0 (false) if n is not prime. Don't worry about making the test efficient or doing it with integer arithmetic. function r = isprime(n) % isprime(n): return 1 (true) of n is prime, 0 (false) if it isn't. (crude!) r = 1; % set answer to true to start % check if n is divisble by 2, return false if it is if 2*round(n/2) == n r = 0; % set answer to false return; % exit function right away end % now check all odd numbers between 3 and sqrt(n) for m=3:2:round(sqrt(n)) if m*round(n/m) == n r = 0; return; end end end 30. Write a function that returns a vector of all the integer divisors of an integer n. Again, don't worry about efficiency or integer arithmetic. function d = divisors(n) % divisors(n): return vector of all divisors of n m = 0; % set number of divisors to zero for k = 1:n if k*round(n/k) == n m = m+1; % increment number of divisors d(m) = k; % add m to vector of divisors end end end