Определите размер матрицы, который вы можете удобно разместить в доступной оперативной памяти. Например, если у вас есть машина на 4 ГБ, вы сможете с комфортом хранить матрицу, которая занимает около 800 МБ. Сохраните это значение в переменной
Mb
. Используйте следующую информацию, чтобы вычислить максимальный размер матрицы N, который вы можете хранить в мегабайтах памяти.
В мегабайте
1024
килобайтаКилобайт — это
1024
байта.Число с плавающей запятой —
8 bytes
.Матрица
N × N
содержитN^2
чисел с плавающей запятой.Назовите N, который вы вычисляете,
nmax
.(b) Создайте две случайные матрицы
A
иB
размеромNmax × Nmax
каждая. Используя функции MATLABtic
иtoc
, определите, сколько времени (секунд) требуется для вычисления произведенияAB
. Определите количество операций с плавающей запятой (сложения и умножения), необходимых для вычисленияNmax × Nmax
матрично-матричного произведения(2/3)n^3.
Используйте это число для оценки количества операций с плавающей запятой в секунду («флопсов»), которые может выполнять ваш компьютер. Назовите эту скорость флопаflops
.
% Part A
nmax = sqrt((1600*1024*1024)/8); % 8GB of RAM
% Part B
A = (nmax:nmax);
B = (nmax:nmax);
tic
prod = A*B;
prod_time = toc
flops = (2/3)*(prod).^3
Все работает нормально, но мне кажется, что я не создаю матрицу для значений A
и B
. Что я делаю неправильно?