Лаба 4 / LAB4
.DOCСодержимое Файла kuzza.m
%этот скрипт есть лабораторная работа по матрицам. Для запуска необходимо иметь при себе задание
disp(['Привет всем !']);
disp(['Возьмите свой вариант лабораторной #4 и введите свои данные:']);
disp(['1 задание']);
disp(['Выберете способ округления элементов матриц A, B и C ']);
disp(['Возможные варианты :"fix","round","ceil" или "floor" ("fix" по умолчанию)']);
okrug=input('Ваш выбор:','s');
disp(['Введите размерности матриц А(ma*na),B(mb*nb),C(mc*nc):']);
ma=input('Введите ma = ');
na=input('Введите na = ');
mb=input('Введите mb = ');
nb=input('Введите nb = ');
mc=nb;
disp(['mc = nb']);
nc=na;
disp(['nc = na']);
con=0;
if m_if(okrug,'fix')
A=fix(rand(ma,na).*3)
disp(['размерность матрицы A :']);
disp(size(A));
pause(1);
B=fix(rand(mb,nb).*4)
disp(['размерность матрицы B :']);
disp(size(B));
pause(1);
C=fix(rand(mc,nc).*3)
disp(['размерность матрицы C :']);
disp(size(C));
pause(1);
con=1;
end
if m_if(okrug,'ceil')
A=ceil(rand(ma,na).*3)
disp(['размерность матрицы A :']);
disp(size(A));
pause(1);
B=ceil(rand(mb,nb).*4)
disp(['размерность матрицы B :']);
disp(size(B));
pause(1);
C=ceil(rand(mc,nc).*3)
disp(['размерность матрицы C :']);
disp(size(C));
pause(1);
con=1;
end
if m_if(okrug,'floor')
A=floor(rand(ma,na).*3)
disp(['размерность матрицы A :']);
disp(size(A));
pause(1);
B=floor(rand(mb,nb).*4)
disp(['размерность матрицы B :']);
disp(size(B));
pause(1);
C=floor(rand(mc,nc).*3)
disp(['размерность матрицы C :']);
disp(size(C));
pause(1);
con=1;
end
if m_if(okrug,'round')
A=round(rand(ma,na).*3)
disp(['размерность матрицы A :']);
disp(size(A));
pause(1);
B=round(rand(mb,nb).*4)
disp(['размерность матрицы B :']);
disp(size(B));
pause(1);
C=round(rand(mc,nc).*3)
disp(['размерность матрицы C :']);
disp(size(C));
pause(1);
con=1;
end
if con==0
A=fix(rand(ma,na).*3)
disp(['размерность матрицы A :']);
disp(size(A));
pause(1);
B=fix(rand(mb,nb).*4)
disp(['размерность матрицы B :']);
disp(size(B));
pause(1);
C=fix(rand(mc,nc).*3)
disp(['размерность матрицы C :']);
disp(size(C));
pause(1);
end
disp(['']);
disp(['']);
disp(['']);
disp(['2 задание']);
W=A*(C')*(B')
disp(['размерность матрицы W:']);
disp(size(W));
disp(['( Матрица W создана перемножением W=A*(C^T)*(B^T) )']);
pause(1);
[n1,n2]=size(W);
disp(['']);
disp(['']);
disp(['']);
disp(['3 задание']);
disp(['Из матрицы W выделим матрицу H состоящую из фрагмента матрицы W'])
disp(['Каким методом создать матрицу H:']);
disp(['1. 0-1 матрицы']);
disp(['2. Средствами системы MatLab ']);
disp(['("1" по умолчанию)']);
q=input('Ваш выбор: ');
disp('Введите номера строк матрицы W:')
i1=input('от :');
i2=input('и до :');
disp('Введите номера столбцов матрицы W:')
j1=input('от :');
j2=input('и до :');
if (q==2)
H=W(i1:i2,j1:j2)
disp(['Matrix H size is ']);
disp(size(H));
pause(1);
else
H=[zeros(i2-i1+1,i1-1),eye(i2-i1+1),zeros(i2-i1+1,n1-i2)]*W;
H=H*[zeros(j1-1,j2-j1+1);eye(j2-j1+1);zeros(n2-j2,j2-j1+1)]
disp(['Matrix H size is ']);
disp(size(H));
pause(1);
end;
[n1,n2]=size(H);
disp(['4 задание']);
disp(['Получим из матрицы H матрицу H1, как результат перестановки сторки i1 со строкой i2 ']);
disp([' и столбца j1 со столбцом j2 ']);
i1=input('Введите i1 :');
i2=input('Введите i2 :');
j1=input('Введите j1 :');
j2=input('Введите j2 :');
R1=eye(n1);
R1(i1,i1)=0;
R1(i2,i2)=0;
R1(i1,i2)=1;
R1(i2,i1)=1;
H1=R1*H;
R2=eye(n2);
R2(j1,j1)=0;
R2(j2,j2)=0;
R2(j1,j2)=1;
R2(j2,j1)=1;
H1=H1*R2
pause(1);
disp(['5 задание']);
disp(['Также из матрицы Н получим матрицу Н2, у которой строка k0 и столбец r0 ']);
disp(['умножены на числа L1 и L2 соответственно ']);
k0=input('Введите k0 :');
r0=input('Введите r0 :');
L1=input('Введите L1 :');
L2=input('Введите L2 :');
R1=eye(n1);
R1(k0,k0)=L1;
H2=R1*H;
R2=eye(n2);
R2(r0,r0)=L2;
H2=H2*R2
pause(1);
disp(['6 задание']);
disp(['Из матрицы Н получим матрицу Н3 , у которой строка k0 есть сумма'])
disp([' строки k0 и k1, а столбец r0 есть разность столбцов r0 и r1']);
k1=input('Введите k1 :');
r1=input('Введите r1 :');
R1=eye(n1);
R1(k0,k1)=1;
H3=R1*H;
R2=eye(n2);
R2(r1,r0)=-1;
H3=H3*R2
pause(1);
disp(['7 задание']);
disp(['Сгенерируем матрицу А и b правых частей:']);
A=rand(4,4)
b=rand(4,1)
[L,U]=lu(A);
disp(['Применив LU факторизацию, решим уравнение Ax=b:']);
x=U\(L\b)
disp(['Найдем норму вектора невязки || r || = || Ax - b || :']);
disp(norm(A*x-b));
disp(['Найдем обусловленность матрицы A :']);
disp(cond(A));
disp(['Вычислим оценку погрешности решения системы Ax=b :']);
содержимое файла m_if.m
function i=m_if(text_1,text_2)
long_1=length(text_1);
long_2=length(text_2);
if long_1~=long_2
i=0;
else
i=(text_1==text_2);
i=prod(i);
end