Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаба 4 / LAB4

.DOC
Скачиваний:
48
Добавлен:
01.05.2014
Размер:
34.82 Кб
Скачать

Содержимое Файла 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

Соседние файлы в папке Лаба 4