Метод вращения решения СЛАУ в пакете Matlab

Автор: Пользователь скрыл имя, 03 Марта 2013 в 19:50, курсовая работа

Краткое описание

Все методы решения линейных алгебраических задач можно разбить на два класса: прямые и итерационные. Прямые методы – это такие методы, которые приводят к решению за конечное число арифметических операций. Если операции реализуются точно, то и решение также будет точным (в связи с чем к классу прямых методов применяют название точные методы). Итерационные методы – это методы в которых точное решение может быть получено лишь в результате бесконечного повторения единообразных действий.

Оглавление

Введение………………………………………………………………………….3
Основы Matlab.……………………………………………………………………4
Описание метода вращений…………………………………………………….5
Решение задачи…………………………………………………………………...9
Заключение ………………………………………………………………………11
Библиографический список………………………………………………….….12

Файлы: 1 файл

Курсовая по ВычМату.docx

— 62.20 Кб (Скачать)

 

 

 

 

 

 

 

 

КУРСОВАЯ  РАБОТА

По дисциплине : «Вычислительная математика»

на тему: «Метод вращений решения СЛАУ в пакете Matlab»

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил  студент группы

 

Дата «___»  «___________» 2012г.

                          Проверил:

____________________

_____________________________2012

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержание

 

Введение………………………………………………………………………….3

Основы Matlab.……………………………………………………………………4

Описание  метода вращений…………………………………………………….5

Решение задачи…………………………………………………………………...9

Заключение  ………………………………………………………………………11

Библиографический список………………………………………………….….12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

 

 

 

Все методы решения линейных алгебраических задач  можно разбить на два класса: прямые и итерационные. Прямые методы –  это такие методы, которые приводят к решению за конечное число арифметических операций. Если операции реализуются  точно, то и решение также будет  точным (в связи с чем к классу прямых методов применяют название точные методы). Итерационные методы – это методы в которых точное решение может быть получено лишь в результате бесконечного повторения единообразных действий.

Эффективность способов решения системы 

 

 или

 

иначе, векторно-матричных  уравнений Ах=f, где f=(f1, f2, …,fn) – вектор свободных членов и

х=( х1, х2, …,хn) – вектор неизвестных, а – вещественная n×n-матрица коэффициентов данной системы, во многом зависит от структуры и свойств матрицы А : размера, обусловленности, симметричности, заполненности и др.

 

 

 

Основы Matlab

MATLAB (сокращение от англ. «Matrix Laboratory», в русском языке

произносится как Матла́б) — пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования, используемый в этом пакете. MATLAB используют более 1 000 000 инженерных и научных работников, он работает на большинстве современных операционных систем, включая Linux, Mac OS, Solaris (начиная с версии R2010b поддержка Solaris прекращена) и Microsoft Windows.

Описание языка

Язык MATLAB является высокоуровневым интерпретируемым языком

программирования, включающим основанные на матрицах структуры данных, широкий  спектр функций, интегрированную среду  разработки, объектно-ориентированные  возможности и интерфейсы к программам, написанным на других языках программирования.

Программы, написанные на MATLAB, бывают двух типов — функции и скрипты. Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных. Скрипты же используют общее рабочее пространство. Как скрипты, так и функции не компилируются в машинный код и сохраняются в виде текстовых файлов. Существует также возможность сохранять так называемые pre-parsed программы — функции и скрипты, обработанные в вид, удобный для машинного исполнения. В общем случае такие программы выполняются быстрее обычных, особенно если функция содержит команды построения графиков.

Основной особенностью языка MATLAB являются его широкие возможности по работе с матрицами, которые создатели языка выразили в лозунге «думай векторно» (англ. Think vectorized).

Метод вращений линейных систем

Как и  в методе Гаусса, цель прямого хода преобразований в этом методе –  приведение системы к треугольному виду последовательным обнулением поддиагональных элементов сначала первого столбца, затем второго и т.д.

Пусть с1 и s1 – некоторые отличные от нуля числа. Умножим первое уравнение исходной системы (1) на с1, второе на s1 и сложим их; полученным уравнением заменим первое уравнение системы. Затем первое уравнение исходной системы умножаем на –s1, второе – на c1 и результатом их сложения заменим второе уравнение. Таким образом, первые два уравнения (1) заменяются уравнениями

 

 

1) =0

- условие исключения X1 из второго уравнения

2)   c12 + s12 = 1

- условие нормировки.

 

 

Отсюда  .

 

Эти числа  можно интерпретировать как косинус  и синус некоторого угла (отсюда название метод вращений, каждый шаг такого преобразования можно рассматривать как вращение расширенной матрицы системы в плоскости, определяемой индексами обнуляемого индекса).

В результате преобразований получим систему

 

где

 

 

Далее первое уравнение системы заменяется новым, полученным сложением результатов  умножения первого и третьего уравнений соответственно на

 

а третье – уравнением, полученным при сложении результатов умножения тех же уравнений соответственно на –s2 и с2. Получим систему

 

 

где

 

 

Выполнив  преобразование m-1 раз, придем к системе

 

 

Вид полученной системы такой же, как после  первого этапа преобразований методом  Гаусса. Эта система обладает следующим  свойством: длина любого вектора-столбца (эвклидова норма) расширенной матрицы остается такой же, как у исходной матрицы. Следовательно, при выполнении преобразований не наблюдается рост элементов.

Далее по этому же алгоритму преобразуется матрица

 

 

и т.д.

В результате m-1 этапов прямого хода система будет приведена к треугольному виду.

Нахождение  неизвестных не отличается от обратного  хода метода Гаусса.

Треугольная, точнее, трапециевидная структура последней  системы позволяет последовательно  одно за другим вычислять значения неизвестных, начиная с последнего:

 

 

 

 

Всего метод вращения требует примерно 4/3m3 операций умножения и деления, плюс 2/3m3  операций сложения. По причине  того что операция сложения выполняется  намного быстрее, чем умножения  и деления, то обычно ограничиваются подсчетом последних.

 

 

 

Решение СЛАУ методом вращений

 

Решить систему:


0.1х1 + 2х2 – 10х3 = 0.6,

0.3х1 + 6.01х2 – 25х3 = 1.852,

0.4х1 + 8.06х2 + 10.001х3 = 2.91201

 

 

%Тело подпрограммы :

function x=rotation(MASS,n)

%Прямой ход методом  вращений :

for i=2:n-1

    for j=i+1:n

        a=MASS(i,i);

        b=MASS(j,i);

        c=a/sqrt(a^2+b^2);

        s=b/sqrt(a^2+b^2);

        for k=i:n+1

            t=MASS(i,k);

            MASS(i,k)=(c*MASS(i,k)+s*MASS(j,k));

            MASS(j,k)=(-s*t+c*MASS(j,k));

        end

    end

end

%Отобразим полученную  матрицу :

vpa(MASS,10)

%Обратный ход :

x=zeros(n,1);

x(n)=MASS(n,n+1)/MASS(n,n);

for i=1:n-1

    summ=0;k=n-i;

    for j=k+1:n

        summ=summ+MASS(k,j)*x(j);

    end

    summ=MASS(k,n+1)-summ;

    if MASS(k,k)==0

        disp('Negative');

    else x(k)=summ/MASS(k,k);

    end

end

%Выводим неизвестный  вектор x

vpa(x,10)

 

%Тело программы :

%Решение СЛАУ методом  вращений.

%Зададим размерность  матрицы

n=3;

%Создадим матрицу состоящую из коэффициентов

MASS=[0.1 2 -10 0.6;0.3 6.01 -25 1.852;0.4 8.06 10.001 2.9120]

 

MASS =

 

    0.1000    2.0000  -10.0000    0.6000

    0.3000    6.0100  -25.0000    1.8520

    0.4000    8.0600   10.0010    2.9120

 

rotation(MASS,n)

 

  0.5099019513  10.2509903858 -8.8244416110   3.4916595156

        0       0.0299358287   27.3026063815 0.2790132296

        0            0          1.3103112486   0.0131031123

 

    2.9999986927

    0.2000000652

    0.0099999999

 

 

ans =

 

    2.9999

    0.2000

    0.0099

Точное решение данной СЛАУ : x=[3; 0,2; 0,01]

Следовательно,  погрешность решения  данной СЛАУ методом вращений составляет : E=[1,3079*10-6; -6,519*10-8; 6,8998*10-12]

Ответ :      x1=3+/-1,3079*10-6;

                  X2=0,2+/-6,519*10-8;

                  X3=0,01+/-6,8998*10-12;

 

 

 

 

 

 

Заключение

 

В данной работе был рассмотрен метод вращения для решения систем линейных алгебраических уравнений. Была подробно рассмотрена теоретическая часть, из которой выводятся различные формулы для реализации данного метода. А также было выполнено сравнение метода вращения с методом Гаусса.

По результатам  работы можно сделать следующие  выводы. Во-первых данный метод не допускает большого роста элементов в процессе преобразований и как следствие численно более устойчив. Не возникает опасности, что результат не поместится в разрядной сетке той или иной вычислительной машины.

Данный  метод удобен для решения систем линейных алгебраических уравнений. По ходу работы мы познакомились с некоторыми подпрограммами пакета Matlab,  которые были необходимы для решения данной задачи. Улучшили навыки программирования в данной среде.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   Библиографический список

 

    1. Вержбицкий В. М. Основы численных методов: Учеб. пособие для вузов / В. М. Вержбицкий. - М. : Высш. шк. , 2002. - 840 с.
    2. Демидович Б.П., Марон И.А. Основы вычислительной математики. -М.: Наука, 1966 г., 664 стр.
    3. Воеводин В.В. Вычислительные основы линейной алгебры. - М.: Наука, 1977. - 304 с.
    4. В.Г.Потемкин "Введение в Matlab". Математический пакет для всех.Allbest.ru

Информация о работе Метод вращения решения СЛАУ в пакете Matlab