Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
controls_vchmatem1.doc
Скачиваний:
16
Добавлен:
07.02.2015
Размер:
971.26 Кб
Скачать

4.4. Примерные вопросы на защите работы

1. Что называется корнем уравнения?

2. Что значит решить уравнение?

3. Каковы этапы решения уравнения с одной переменной?

4. Какие существуют методы решения уравнения с одной переменной?

5. Суть метода половинного деления.

6. Суть метода хорд. Графическая интерпретация метода.

7. Суть метода касательных. Графическая интерпретация метода.

8. Суть метода итерации.

9. Каковы достаточные условия сходимости итерационного процесса при решении уравнения x=f(x) на отрезке [a,b], содержащего корень, методом простой итерации?

10. Какое условие является критерием достижения заданной точности при решении уравнения x=f(x) методом хорд, касательных, итераций?

11. Записать формулу нахождения значений последовательности при решении уравнения методом: хорд, касательных.

12. Как строится итерационная последовательность точек при решении уравнения методом простой итерации?

4.5. Задание

Используя варианты и результаты лабораторной работы №3 выполнить следующие задания:

1. Решить уравнение методами половинного деления, итераций, секущих и касательных с точностью 0,001.

2. Вывести на печать приближенное значение корня, количество итераций, значение невязки.

3. Провести сравнительную характеристику методов.

4. Решить уравнение в среде MATLABс помощью встроенных функций.

ЛАБОРАТОРНАЯ РАБОТА №5

РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ

АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ

5.1. ЦЕЛЬ РАБОТЫ

Сформировать у студентов представление о прямых и итерационных методах решения систем линейных уравнений, выработать умения составлять и применять алгоритмы и программы для решения систем уравнений, дать навыки в использовании программных средств для решения систем уравнений.

5.2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Изучить теоретическую часть. Выполните задания, соответствующие номеру Вашего варианта, и продемонстрируйте их преподавателю.

2. Оформите отчет по лабораторной работе, который должен содержать:

  • титульный лист;

  • исходные данные варианта;

  • решение задачи;

  • результаты решения задачи.

5.3. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ

Пример 5.1.

Найти решение системы методом Гаусса:

Решение:

Создать файл Exchange.m(листинг 5.1), содержащий описание функции, осуществляющей перестановку строк при обнаружении в текущей строке нулевого элемента на главной диагонали.

Листинг 5.1. Файл Exchange.m.

function z=Exchange(C,i)

k=i+1;

while C(k,i)==0

k=k+1;

end;

for j=1:size(C,1)

s=C(i,j);

C(i,j)=C(k,j);

C(k,j)=s;

end;

z=C;

2. Создать файл Simplex.m(листинг 5.2), содержащий описание функции, возвращающей расширенную матрицу системы к диагональному виду.

Листинг 5.2. Файл Simplex.m.

function z=Simplex(A,b)

N=size(A,1); % Определение числа уравнений системы

C=cat(2,A,b); % Создание расширенной матрицы системы

for i=1:N-1

if C(i,i)==0

C=Exchange(C,i);

end;

for j=0:N

C(i,N+1-j)=C(i,N+1-j)/C(i,i);

end;

for m=i+1:N

alpha=C(m,i);

for j=i:N+1

C(m,j)=C(m,j)-alpha*C(i,j);

end;

end;

end;

C(N,N+1)=C(N,N+1)/C(N,N);

C(N,N)=1;

z=C;

3. Создать файл Gauss.m(листинг 5.3), содержащий описание функции, возвращающей решение системы линейных уравнений методом Гаусса.

Листинг 5.3. Файл Gauss.m.

function z=Gauss(A,b)

C=Simplex(A,b);

N=size(A,1);

v(N)=C(N,N+1);

for j=1:N-1

s=0;

for k=0:j-1

s=s+C(N-j,N-k)*v(N-k);

end;

v(N-j)=(C(N-j,N+1)-s)/C(N-j,N-j);

end;

z=v';

4. Задать матрицу системы линейных уравнений:

>> A=[1.23,-3.25,-8.69;7.03,4.81,0.27;4.49,-7.55,12.51]

A =

1.2300 -3.6900 -8.6900

7.0300 4.8100 0.2700

4.4900 -7.5500 12.5100

5. Задать вектор-столбец свободных членов:

>> b=[10.33;-6.43;41.53]

b =

10.3300

-6.4300

41.5300

6. Решить систему уравнений, использую функцию Gauss( ):

>> x=Gauss(A,b)

x =

1.6468

-3.7694

0.4540

7. Проверить правильность решения системы линейных уравнений:

>> A*x

ans =

10.3300

-6.4300

41.5300

Ответ:решением системы методом Гаусса является вектор-столбец.

Пример 5.2.

Решить систему линейных алгебраических уравнений методом итерации с точностью 0,001:

Решение:

Для начала преобразуем данную систему к виду пригодному для итерационного процесса:

1. Возьмем первым уравнением второе, третьим - третье, а вторым сумму первого и третьего уравнений:

2. Разделим каждое уравнение на диагональный коэффициент и выразим из каждого уравнения диагональное неизвестное:

3. Создайте файл Iterac.m(листинг 5.4), содержащий описание функции, возвращающей решение системы линейных уравнений методом простой итерации.

Листинг 5.4. Файл Iterac.m.

function Iterac(C1,d1,eps)

N=size(C1,1);

R1=d1;

q1=R1;

q2=(C1*q1)+R1;

p=0;

s=0;

for i=1:N

if abs(q2(i)-q1(i))>s

s=abs(q2(i)-q1(i));

end;

end;

while s>eps

p=p+1;

q1=q2;

q2=(C1*q1)+R1;

s=0;

for i=1:N

if abs(q2(i)-q1(i))>s

s=abs(q2(i)-q1(i));

end;

end;

end;

q2

(C1*q2)+R1-q2

p

abs(q2-q1)

4. Задайте матрицу системы, приведенной к виду, пригодному для метода простой итерации:

>> A=[0,-0.6842,-0.0384;0.5296,0,0.3537;-0.3589,0.6035,0]

A =

0 -0.6842 -0.0384

0.5296 0 0.3537

-0.3589 0.6035 0

5. Задайте вектор-столбец свободных членов:

>> b=[-0.9146;-4.8018;3.3197]

b =

-0.9146

-4.8018

3.3197

6. Найдите решение системы линейных уравнений:

>> Iterac(A,b,0.001)

q2 =

1.6469

-3.7688

0.4537

ans =

1.0e-003 *

-0.3175

-0.3475

0.4688

p =

11

ans =

1.0e-003 *

0.5043

0.4768

0.2273

Ответ:решением системы является вектор-столбец, полученный на 11 шаге итерации.

Пример 5.3.

Решить систему линейных алгебраических уравнений методом Зейделя с точностью 0,001:

Решение:

1. Создать файл Zeidel.m(листинг 5.5), содержащий описание функции, выполняющей последовательно: а) приведение системы к нормальному виду; б) приведение нормальной системы к виду, пригодному для итерационного процесса Зейделя; в) реализацию итерационного процесса Зейделя.

Листинг 5.5 Файл Zeidel.m.

function Zeidel(A,b,eps);

N=size(A,1);

% Приведение системы к нормальному виду

C=A'*A;

D=A'*b;

% Приведение системы к виду, пригодному для итерационного процесса

for i=1:N

D1(i)=D(i)/C(i,i);

end;

D1=D1'; % Транспонирование матрицы

d1=D1;

for i=1:N

for j=1:N

if i==j

C1(i,j)=0;

else

C1(i,j)=-C(i,j)/C(i,i);

end;

end;

end;

% Решение СЛАУ методом Зейделя

R1=d1;

q1=R1;

% Создание матрицы для хранения промежуточных данных

t=size(C1);

N=t(1,1);

q2=zeros(t(1,1),1);

% Цикл вычислений

p=0;

s=0;

for i=1:N

if abs(q2(i)-q1(i))>s

s=abs(q2(i)-q1(i));

end;

end;

while s>eps

q2=q1;

p=p+1;

for f=1:N

v=(C1*q1)+R1;

x(f,1)=v(f,1);

q1(f,1)=x(f,1);

end;

s=0;

for i=1:N

if abs(q2(i)-q1(i))>s

s=abs(q2(i)-q1(i));

end;

end;

q1=x;

end;

'Ответы:'

q2

'Проверка:'

A*q2

'число проходов:'

p

abs(q2-q1)

2. Задать значения коэффициентов при неизвестных исходной системы линейных уравнений и столбец свободных членов:

>> A=[1.23,-3.25,-8.69;7.03,4.81,0.27;4.49,-7.55,12.51];

>> b=[10.33;-6.43;41.53];

3. Вычислить решение системы линейных уравнений, используя функцию Zeidel():

>> Zeidel(A,b,0.001)

ans =

Ответы:

q2 =

1.6461

-3.7683

0.4543

ans =

Проверка:

ans =

10.3235

-6.4304

41.5255

ans =

число проходов:

p =

8

ans =

1.0e-003 *

0.4400

0.5685

0.2488

Ответ:решением системы трех линейных уравнений является вектор, найденный на восьмом шаге итерации.

Рассмотрим решение систем линейных уравнений с помощью встроенной функции solve():

solve (' f1', 'f2 ', …, 'fn ', x1, x2, …, xn)

где:

  • 'fi '–i-е уравнение системы,i=1, 2, …,n;

  • xii-е неизвестное,i=1, 2, …,n.

Перед функцией solve()необходимо с помощью функцииsymsопределить символьные переменные.

Пример 5.4.

Пусть необходимо решить следующую систему уравнений:

Программа решения системы уравнений имеет вид:

>> syms x1 x2 x3;

>> Y=solve('1.23*x1-3.25*x2-8.69*x3=10.33', '7.03*x1+4.81*x2+0.27*x3=-6.43', '4.49*x1-7.55*x2+12.51*x3=41.53')

После нажатия клавиши <Enter> получим ответ в следующем виде:

Y =

x1: [1x1 sym]

x2: [1x1 sym]

x3: [1x1 sym]

Программа задачу решила, но не выдала значения неизвестных х1,х2,х3. Для их получения необходимо воспользоваться командойY.k,где k– имя неизвестного. В нашем случае решение будет иметь вид:

>> Y.x1

ans =

1.6467696870844978837212332256586

>> Y.x2

ans =

-3.7690989344414828576791743237764

>> Y.x3

ans =

.45398138688708304769095896660916

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