diff --git a/hw2/assignment2.m b/hw2/assignment2.m index c6a59a4..ded39e9 100644 --- a/hw2/assignment2.m +++ b/hw2/assignment2.m @@ -31,6 +31,61 @@ end loglog(h, err) +%% Problem 6 + +n = 3000; +A = rand(n,n); +B = rand(n,n); +tic +[C] = matTimesMat_classical(A, B); +toc +norm(C - A * B) / norm(C) +tic +[C] = matTimesMat_column(A, B); +toc +norm(C - A * B) / norm(C) +tic +[C] = matTimesMat_outerProd(A, B); +toc +norm(C - A * B) / norm(C) + +%% Problem 3 (functions) + function approx = my_diff(f, x, x_0, h) approx = (subs(f,x,x_0 + h) - subs(f, x, x_0)) / h; +end + +%% Problem 6 (functions) + +function [C] = matTimesMat_classical(A, B) +s = size(A); +n = s(1); +C = zeros(n); +for i=1:n + for j=1:n + for k=1:n + C(i,j) = C(i,j) + A(i,k) * B(k,j); + end + end +end +end + +function [C] = matTimesMat_column(A, B) +s = size(A); +n = s(1); +C = zeros(n); +for j=1:n + for k=1:n + C(:,j) = C(:,j) + B(k,j) * A(:,k); + end +end +end + +function [C] = matTimesMat_outerProd(A, B) +s = size(A); +n = s(1); +C = zeros(n); +for j=1:n + C = C + A(:,j) * B(j,:); +end end \ No newline at end of file diff --git a/hw2/assignment2.pdf b/hw2/assignment2.pdf index 671c3a7..6e4f437 100644 Binary files a/hw2/assignment2.pdf and b/hw2/assignment2.pdf differ