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

mp_12a_s2

.docx
Скачиваний:
1
Добавлен:
28.06.2022
Размер:
57.16 Кб
Скачать

а) б) в)

Упражнение 1С**. Создать M - функцию, которая для произвольной матрицы проверяет условия сжатости.

function C = C1(C)

N=length(C);

for k=1:N

S_1=0;

for j=1:N

S_1=S_1+abs(C(k,j));

end;

end;

for k=1:N

S_2=0;

for i=1:N

S_2=S_2+abs(C(i,k));

end;

end;

S_3=0;

for i=1:N

for j=1:N

S_3=S_3+(C(i,j))^2;

end;

end;

if(max(S_1)<1)||max(S_2)<1||sqrt(S_3)<1))

disp('Условие сжатости выполняется');

else

disp('Условие сжатости не выполняется');

end;

end

Упражнение 4. Создать M-функцию для решения уравнения с заданной точностью с выводом последовательности приближений. Входными параметрами являются функция параметр сжатия начальное приближение точность решения С точностью 0.0001 решить уравнение (см. ниже, номер задания равен номеру компьютера). Сравнить с ответом, полученными при непосредственном решении в МatLab.

19.

function x = u_4(f, a, x1, eps)

x(1) = x1;

x(2) = f(x1);

p0 = abs(x(1) - x(2));

i = 3;

while ((a^i * p0) / (1 - a) >= eps)

x(i) = f(x(i - 1));

i= i + 1;

end

x(i) = f(x(i - 1));

end

a = -0.5671

>> u_4(@(x)(-exp(x)), 0.5769, 1, 0.0001)

ans =

1.0000 -2.7183 -0.0660 -0.9361 -0.3921

-0.6756 -0.5088 -0.6012 -0.5482 -0.5780

-0.5610 -0.5706 -0.5652 -0.5683 -0.5665

-0.5675 -0.5669 -0.5673 -0.5671 -0.5672

-0.5671

>> fzero(@(x)(x+exp(x)),-0.55)

ans = -0.5671

Упражнение 5. Записать систему уравнений в виде . Проверить выполнение условия сжатости матрицы . Создать M-функцию для решения методом итераций системы уравнений с точностью взяв в качестве начального приближения решения Выходные параметры: приближённое решение и количество итераций. Решить систему уравнений с точностью 0,001. Проверить решение подстановкой.

19.

.

function X = u_5(A, B, eps)

N = length(A);

E=eye(N);

C=-A+E;

% Запишем уравнение в виде X=CX+B

disp('Уравнение в виде X=CX+B:');

for i = 1:N

str = strcat('x', num2str(i),'=');

for j = 1:N

if (C(i,j) ~= 0)

if (C(i,j) > 0) str = strcat(str, '+');

end;

str = strcat(str, num2str(C(i,j)),'*x',num2str(j));

end;

end;

if (B(i) > 0) str = strcat(str, '+');

end;

str = strcat(str, num2str(B(i)));

disp(str);

end;

% Проверяем первое условие

for k = 1:N

S_1(k) = 0;

for j = 1:N

S_1(k) = S_1(k) + abs(C(k,j));

end;

end;

% Проверяем второе условие

for k = 1:N

S_2(k) = 0;

for i = 1:N

S_2(k) = S_2(k) + abs(C(i,k));

end;

end;

% Проверяем третье условие

S_3 = 0;

for i = 1:N

for j = 1:N

S_3 = S_3 + (C(i,j))^2;

end;

end;

if (max(S_1) < 1 || max(S_2) < 1 || sqrt(S_3) < 1)

disp('Условие сжатости матрицы С=-А+Е выполняется');

else disp ('Условие сжатости матрицы С=-А+Е не выполняется');

end;

k = 0;

% в качестве начального приближения решения берём X0=B

X0 = B;

disp('X0 = ');

for i = 1:N

disp([' ',num2str(X0(i))]);

end;

X1 = C*X0 + B;

while (max(X1 - X0) > eps)

X0 = X1;

X1 = C*X0 + B;

k = k + 1;

end;

X=X1;

disp(['X',num2str(k),' = ']);

for i = 1:N

disp([' ',num2str(X(i))]);

end;

disp(sprintf('Количество итераций: %d', k));

end

>> A = [0.23 7.31 0.41; 0.29 -0.34 7.27; -6.41 -0.23 -0.67]

>> B = [-4.26; 7.51; 6.23]

>> X = u_5(A, B, 0.001)

Уравнение в виде X=CX+B:

x1=+0.77*x1-7.31*x2-0.41*x3-4.26

x2=-0.29*x1+1.34*x2-7.27*x3+7.51

x3=+6.41*x1+0.23*x2+1.67*x3+6.23

Условие сжатости матрицы С=-А+Е не выполняется

X0 =

-4.26

7.51

6.23

X0 =

-64.9926

-26.4833

-8.9452

Количество итераций: 0

X =

-64.9926

-26.4833

-8.9452

>> A=A/7.31

>> B=B/7.31

>> X = u_5(A, B, 0.001)

Уравнение в виде X=CX+B:

x1=+0.9957*x1-0.1368*x2-0.0076727*x3-0.58276

x2=-0.039672*x1+1.0465*x2-0.99453*x3+1.0274

x3=+0.87688*x1+0.031464*x2+1.0917*x3+0.85226

Условие сжатости матрицы С=-А+Е не выполняется

X0 =

-0.58276

1.0274

0.85226

X1 =

-2.0721

1.12

1.1671

Количество итераций: 1

X =

-2.0721

1.1200

1.1671

#

>> A = [1 0.06 -0.02; 0.03 1 -0.05; 0.01 -0.02 1]

>> B = [2;3;5]

>> u_5(A, B, 0.001)

Уравнение в виде X=CX+B:

x1=-0.06*x2+0.02*x3+2

x2=-0.03*x1+0.05*x3+3

x3=-0.01*x1+0.02*x2+5

Условие сжатости матрицы С=-А+Е выполняется

X0 =

2

3

5

X2 =

1.9092

3.1949

5.0448

Количество итераций: 2

ans =

1.9092

3.1949

5.0448

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]