$24
Please submit to CANVAS a .zip le that includes the following Matlab functions:
compute factorial.m
compute Euclidean norm.m
matrix times vector.m
pi series.m
Exercise 1 The factorial of a natural number is de ned as
n! = n(n 1)(n 2) 1; 0! = 1: (1)
Write a Matlab/Octave function compute factorial.m that takes an integer number as input and returns (1). The function should be of the following form
function [b] = compute factorial(n)
Input:
n: natural number (possibly including 0)
Output:
b: factorial of n
Exercise 2 The Euclidean norm of an n-dimensional vector is de ned as
x
= v
:
(2)
xk2
k k
u
n
k=1
uX
t
Write a Matlab/Octave function compute Euclidean norm.m that computes the norm (2), for an arbitrary input vector x. The function should be of the following form
function [z] = compute Euclidean norm(x)
1
Input:
x: n-dimensional vector (either column vector or row vector)
Output:
z: norm of the vector
Hint: You can use the for loop. The number of components of the input vector can be determined by using the Matlab command length(x) (see the Matlab/Octave documentation). You can compare the output of your function with the Matlab/Octave function norm(x).
Exercise 3 Write a Matlab/Octave program matrix times vector.m that computes the prod-uct between an n-dimensional square matrix A and an n-dimensional (column) vector x. The components of the (column) vector y = Ax are de ned
n
Xj
yi = Aij xj
i = 1; :::; n:
(3)
=1
The function should be of the following form
function [y] = matrix times vector(A,x)
Input:
A: n n matrix
x: n 1 vector
Output:
y: n 1 vector
You are not allowed to use the Matlab expression A*x within your function.
Hint: You can use two nested for loops to compute the vector y (one loop computes the sum
while the other one controls the index i in (3)). The size of the matrix A can be determined by using the Matlab command size(A) (see the Matlab/Octave documentation). You can debug your function by comparing the output with the Matlab expression A*x, for simple matrices A and vectors x.
2
Exercise 4 The number can be de ned as a limit of various converging series of numbers. Among them
n
16k
8k + 1
8k + 4
8k + 5
8k + 6
Simon Plou e (1995); (4)
= n!1 k=0
X
1
4
2
1
1
lim
u
!1
k=1 k
p
u
X
=
6
v
nlim
n 12
Euler (1735):
(5)
t
Write a Matlab/Octave function pi series.m retuns the rst 10 partial sums of the series (4)-(5), i.e., the vectors P and E with components
Pn+1
n
16k
8k + 1
8k + 4
8k + 5 8k + 6
n = 0; 1; 2; :::
(6)
= k=0
X
1
4
2
1
1
v
p
n
1
En =
6
n = 1; 2; :::
(7)
2
u
k=1 k
uX
t
The function should be of the following form
function [P,E,n1,n2]=pi series()
Output:
P, E: row vectors with 10 components de ned by the rst 10 partial sums in (6) and (7).
n1, n2: see the Extra Credit exercise hereafter. If you do not want to code the extra credit part, just set n1=0 and n2=0 in the function pi series.m.
Extra Credit: At the end of the Matlab function pi series.m, write a code that returns the smallest integer numbers n1 and n2 such that
jPn1+1 j < 10 5 jEn2 j < 10 5: (8)
To determine n1 and n2, you can use a for loop combined with an if statement or, equivalently, a while loop.
3