Мегаобучалка Главная | О нас | Обратная связь


Задание 1 Обусловленность матрицы



2020-03-19 245 Обсуждений (0)
Задание 1 Обусловленность матрицы 0.00 из 5.00 0 оценок




Расчетно-графическая работа

по курсу: «Вычислительная математика»

 

 

Выполнила:

Студентка II курса

Булгакова Н.

Группы ВТБ-81

Проверил:

Преподаватель

Голубева Елена Николаевна

 

г. 362964Бердск,

2010


Задание 1 Обусловленность матрицы

Задание: Дана система уравнений ax=b порядка n. Исследовать зависимость погрешности решения x от погрешностей правой части системы b.

 

погрешность уравнение координата интерполяция дифференциальный

1. Задать матрицу системы A и вектор правой части b, найти решение x системы Ax=b с помощью метода Гаусса.

2. Принимая решение x, полученное в п.1, за точное, вычислить вектор

 

 

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

 

 

( -произвольная величина погрешности).

3. На основе вычисленного вектора d построить гистограмму. По гистограмме определить компоненту  , вектора b, которая оказывает наибольшее влияние на погрешность решения.

4. Вычислить число обусловленности cond(A) матрицы A.

5. Оценить теоретически погрешность решения  по формуле:


 

Сравнить значение  со значением практической погрешности  Объяснить полученные результаты.

Решение

1. Задаём матрицу А.

 

 

Для заполнения используем код программы zapolnenie . cpp (см. приложение)

 

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <windows.h>

#include <dos.h>

main()

{

    double matr[100][100];

 

    for (int i=1;i<7;i++)

{

       for (int j=1;j<7;j++)

    matr[i][j]= 1000/(3*(pow(0.1*21*i*j,2))+pow(0.1*21*i*j,3));

}

    for ( int j=1;j<7;j++)

{

                       for ( int i=1;i<7;i++)

 

printf("%10.4f",matr[j][i]);

printf("\n");

}

        

getchar();

}

 

Результат работы zapolnenie:

 

 

 

Найдем решение полученной матрицы используя программу gauss . cpp (см приложение)

Исходный код gauss.cpp:

 

#include <iostream.h>

#include <stdio.h>

#include <windows.h>

#include <math.h>

#include <conio.h>

#include <dos.h>

 

const int sz=6;

 


double A[sz][sz]={

       {44.4622, 7.8735, 2.7092, 1.2432, 0.6719, 0.4038},

        {7.8735, 1.2432, 0.4038, 0.1789, 0.0945, 0.0558},

        {2.7092, 0.4038, 0.1278, 0.0558, 0.0292, 0.0172},

        {1.2432, 0.1789, 0.0558, 0.0242, 0.0126, 0.0074},

        {0.6719, 0.0945, 0.0292, 0.0126, 0.0065, 0.0038},

        {0.4038, 0.0558, 0.0172, 0.0074, 0.0038, 0.0022}

                       } ;

double F[sz]={21.00,21.00,21.00,21.00,21.00,21.00} ;

double X[sz];

double b[sz+1],par;

 

// функция вывода матрицы на экран

void Viv(double A[sz][sz])

{

int i,j;

for( i=0;i<sz; i++)

{

    for( j=0;j<sz; j++)

printf(" %.4f ",A[i][j]); //вывод на экрам исходной матрицы с заданным количеством знаков после запятой (5f)

printf(" %.4f ",F[i]);

cout<<endl;

}

 system("pause");

}

 

/////////////// функция решения методом Гаусса 

void Resh(double A[sz][sz],double F[sz],double X[sz])

{

int i,j,k;

 for (k=0;k<sz;k++)

    {

              // проверяем первый элемент

                       if (A[k][k]==0) //проверка на неноль

                                 {

                              for (i=k;A[i][k]==0;i++); // находим ненулевой 1й элемент

                              for(j=k;j<sz;j++)          // меняем строки в матрице

                                     {

                                    par=A[k][j]; //смена строк в матрице

                                    A[k][j]=A[i][j]; //путем записи в par и извлечения из него

                A[i][j]=par;

                                     }

           par=F[k]; // смена строк в ответе

           F[k]=F[i];

           F[i]=par;

 

                    }

 

              // получаем 1й элемент единицу (делим всю первую строку на a1,1 )

                       par=A[k][k]; //пишем в par первый элемент

                       for(int i=k;i<sz;i++)

    A[k][i]=A[k][i]/par;

    F[k]=F[k]/par; // делим ответ на 1й

 


// нулевой столбец

                       for(int j=k+1;j<sz;j++)

                                 {

                                          for(int i=k;i<sz;i++)

          b[i]=A[k][i]*A[j][k];

          b[sz]= F[k]*A[j][k];

 

        for(int i=k;i<sz;i++)

          A[j][i]-=b[i];

          F[j]-=b[sz];

                                 }

    }

 for(i=sz-1;i>=0;i--) //обратка

    {

              par=0;

              for (j=0;j<sz-1-i;j++)

par+=A[i][sz-j-1]*X[sz-1-j];

              X[i]=F[i]-par;

    }

}

 

//функция - точка входа в программу

void main()

{

Viv(A);        // выводим матрицу

Resh(A,F,X); // решаем матрицу A методом Гаусса

for(int i=0;i<sz;i++) printf("\nX[%d]= %.5f \n\r",i,X[i]); // вывод результата

 


 system("pause");

}

 

Результат работы gauss:

====================================================

точное

====================================================

44.4622 7.8735 2.7092 1.2432 0.6719 0.4038 21.0000

 7.8735 1.2432 0.4038 0.1789 0.0945 0.0558 21.0000

 2.7092 0.4038 0.1278 0.0558 0.0292 0.0172 21.0000

 1.2432 0.1789 0.0558 0.0242 0.0126 0.0074 21.0000

 0.6719 0.0945 0.0292 0.0126 0.0065 0.0038 21.0000

 0.4038 0.0558 0.0172 0.0074 0.0038 0.0022 21.0000

Для продолжения нажмите любую клавишу . . .

 

X[0]= 872.15582

 

X[1]= -16329.24792

 

X[2]= 10011.59140

 

X[3]= 111650.80126

 

X[4]= -26697.87796

 

X[5]= -144076.29603

 

Для продолжения нажмите любую клавишу . . .

======================================================

 


2. Вычисляем вектор d.

Величина погрешности, вносимой в правую часть системы – 1%.

Сформируем векторы b (по заданному закону)

 

b1 b2 b3 b4 b5 b6
20,79 21 21 21 21 21
21 20,79 21 21 21 21
21 21 20,79 21 21 21
21 21 21 20,79 21 21
21 21 21 21 20,79 21
21 21 21 21 21 20,79

 

Для каждого из них найдем решение матрицы, используя gauss

С погрешностью в …. компоненте

======================================================

в первой

======================================================

 44.4622 7.8735 2.7092 1.2432 0.6719 0.4038 20.7900

 7.8735 1.2432 0.4038 0.1789 0.0945 0.0558 21.0000

 2.7092 0.4038 0.1278 0.0558 0.0292 0.0172 21.0000

 1.2432 0.1789 0.0558 0.0242 0.0126 0.0074 21.0000

 0.6719 0.0945 0.0292 0.0126 0.0065 0.0038 21.0000

 0.4038 0.0558 0.0172 0.0074 0.0038 0.0022 21.0000

Для продолжения нажмите любую клавишу . . .

 

X[0]= 872.07580

 

X[1]= -16327.25169

 


X[2]= 10005.24500

 

X[3]= 111652.84781

 

X[4]= -26679.82743

 

X[5]= -144100.68447

Для продолжения нажмите любую клавишу . . .

======================================================

во второй

======================================================

 44.4622 7.8735 2.7092 1.2432 0.6719 0.4038 21.0000

 7.8735 1.2432 0.4038 0.1789 0.0945 0.0558 20.7900

 2.7092 0.4038 0.1278 0.0558 0.0292 0.0172 21.0000

 1.2432 0.1789 0.0558 0.0242 0.0126 0.0074 21.0000

 0.6719 0.0945 0.0292 0.0126 0.0065 0.0038 21.0000

 0.4038 0.0558 0.0172 0.0074 0.0038 0.0022 21.0000

Для продолжения нажмите любую клавишу . . .

 

X[0]= 874.15205

 

X[1]= -16398.19981

 

X[2]= 10378.69292

 

X[3]= 111250.49388

 

X[4]= -27254.14851

 


X[5]= -143256.57148

Для продолжения нажмите любую клавишу . . .

======================================================

в третьей

======================================================

 44.4622 7.8735 2.7092 1.2432 0.6719 0.4038 21.0000

 7.8735 1.2432 0.4038 0.1789 0.0945 0.0558 21.0000

 2.7092 0.4038 0.1278 0.0558 0.0292 0.0172 20.7900

 1.2432 0.1789 0.0558 0.0242 0.0126 0.0074 21.0000

 0.6719 0.0945 0.0292 0.0126 0.0065 0.0038 21.0000

 0.4038 0.0558 0.0172 0.0074 0.0038 0.0022 21.0000

Для продолжения нажмите любую клавишу . . .

 

X[0]= 865.80942

 

X[1]= -15962.14640

 

X[2]= 7652.50187

 

X[3]= 114149.98680

 

X[4]= -23271.06118

 

X[5]= -148104.07985

Для продолжения нажмите любую клавишу . . .

======================================================

в четвёртой

======================================================

 44.4622 7.8735 2.7092 1.2432 0.6719 0.4038 21.0000

 7.8735 1.2432 0.4038 0.1789 0.0945 0.0558 21.0000

 2.7092 0.4038 0.1278 0.0558 0.0292 0.0172 21.0000

 1.2432 0.1789 0.0558 0.0242 0.0126 0.0074 20.7900

 0.6719 0.0945 0.0292 0.0126 0.0065 0.0038 21.0000

 0.4038 0.0558 0.0172 0.0074 0.0038 0.0022 21.0000

Для продолжения нажмите любую клавишу . . .

 

X[0]= 874.20237

 

X[1]= -16729.55530

 

X[2]= 12510.77695

 

X[3]= 111600.37766

 

X[4]= -35532.05319

 

X[5]= -138409.12992

Для продолжения нажмите любую клавишу . . .

======================================================

в пятой

======================================================

 44.4622 7.8735 2.7092 1.2432 0.6719 0.4038 21.0000

 7.8735 1.2432 0.4038 0.1789 0.0945 0.0558  21.0000

 2.7092 0.4038 0.1278 0.0558 0.0292 0.0172 21.0000

 1.2432 0.1789 0.0558 0.0242 0.0126 0.0074 21.0000

 0.6719 0.0945 0.0292 0.0126 0.0065 0.0038 20.7900

 0.4038 0.0558 0.0172 0.0074 0.0038 0.0022 21.0000

Для продолжения нажмите любую клавишу . . .

 


X[0]= 890.20635

 

X[1]= -16885.51847

 

X[2]= 13438.40819

 

X[3]= 102816.62603

 

X[4]= -16375.93145

 

X[5]= -148185.68530

Для продолжения нажмите любую клавишу . . .

======================================================

в шестой

=====================================================

 44.4622 7.8735 2.7092 1.2432 0.6719 0.4038 21.0000

 7.8735 1.2432 0.4038 0.1789 0.0945 0.0558 21.0000

 2.7092 0.4038 0.1278 0.0558 0.0292 0.0172 21.0000

 1.2432 0.1789 0.0558 0.0242 0.0126 0.0074 21.0000

 0.6719 0.0945 0.0292 0.0126 0.0065 0.0038 21.0000

 0.4038 0.0558 0.0172 0.0074 0.0038 0.0022 20.7900

Для продолжения нажмите любую клавишу . . .

 

X[0]= 847.76738

 

X[1]= -15509.52337

 

X[2]= 5983.80758

 


X[3]= 117317.96737

 

X[4]= -30807.26724

 

X[5]= -140960.86219

Для продолжения нажмите любую клавишу . . .

 

На основе полученных значений сформируем вектор d

 

 

РЕШЕНИЯ С ПОГРЕШНОСТЯМИ

 

 

 

 

 

 

 

точное

в первой

во втророй

в третьей

в четвёртой

в пятой

в шестой

872,1558

872,0758

874,1521

865,8094

874,2024

890,2064

847,7674

-16329,2479

-16327,2517

-16398,1998

-15962,1464

-16729,5553

-16885,5185

-15509,5234

10011,5914

10005,2450

10378,6929

7652,5019

12510,7770

13438,4082

5983,8076

111650,8013

111652,8478

111250,4939

114149,9868

111600,3777

102816,6260

117317,9674

-26697,8780

-26679,8274

-27254,1485

-23271,0612

-35532,0532

-16375,9315

-30807,2672

-144076,2960

-144100,6845

-143256,5715

-148104,0799

-138409,1299

-148185,6853

-140960,8622

 

 

 

x-xi

 

 

 

||x||

0,0800

1,9962

6,3464

2,0466

18,0505

24,3884

111650,8013

1,9962

68,9519

367,1015

400,3074

556,2705

819,7245

 

6,3464

367,1015

2359,0895

2499,1856

3426,8168

4027,7838

 

2,0466

400,3074

2499,1855

50,4236

8834,1752

5667,1661

 

18,0505

556,2705

3426,8168

8834,1752

10321,9465

4109,3893

 

24,3884

819,7245

4027,7838

5667,1661

4109,3893

3115,4338

 

 

 

 

 

 

 

 

||x-xi|| i:1…6

 

d

 

 

 

 

24,3884

 

0,000218435

 

 

 

 

819,7245

 

0,00734186

 

 

 

 

4027,7838

 

0,036074831

 

 

 

 

8834,1752

 

0,079123259

 

 

 

 

10321,9465

 

0,092448477

 

 

 

 

5667,1661

 

0,050757953

 

 

 

(см. файл «Вектор и гистограмма.xls»)

 


Отсюда видим, что

 

 

Строим гистограмму элементов вектора относительных погрешностей d. (см. файл «Вектор и гистограмма»)

 

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

Найдем число обусловленности  матрицы A

Число обусловленности матрицы A вычисляется по формуле

 

 

Норма матрицы A: =57,3638

Норма обратной матрицы : =129841,19


7448184,055

 

Теоретическая оценка погрешности

 

 

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

 

Задача 2 Метод хорд

 

Методом хорд найти корень уравнения  с точностью .

 

Решение

Найдем интервал, в котором находится корень:

 

 

Корнем уравнения является точка пересечения этих функций

 


 

Из графика видно, что корень лежит в интервале .

Найдем неподвижный конец:

 

 

Для определения используем  horda.xls(см. приложение)

 

y(a)

-0,5

y(b)

0,493147

 

непод

y'(a)

1,5

y'(b)

0,66

 

1

y''(a)

-1,75

y''(b)

-0,426

 

 

 

Неподвижный конец -1

Выполняем приближение, используя horda.xls

 

Х

х0

 

1

2

 

 

 

 

 

 

 

 

 

 

xi

F(xi)

sigma

1,50345005

0,1010481

else

1,41881012

0,0179259

else

1,40431471

0,0030870

else

1,40183381

0,0005288

else

1,40140927

0,0000905

else

1,40133662

0,0000155

else

1,40132419

0,0000027

and

 

Окончание процесса – при ,это и есть наш корень.

 

Задача 3 Решение СЛАУ

 

Решить систему уравнений ax=b, где

 

 

Вычислить точностные оценки методов по координатам: , - координаты численного решения,  - координаты точного решения.

 

 

1. Метод простых итераций

Сделаем расчет, используя SLAU.xls

 

х1

0,7500

-0,7500

-0,3333

-0,4375

-0,7708

0,7500

 

х2

1,0000

-0,3750

-0,4444

-0,5833

-0,4028

1,0000

1

х3

0,6667

-0,2500

-0,6667

-0,8750

-1,1250

0,6667

 

х4

1,7500

-0,1875

-0,5000

-0,5000

0,5625

1,7500

 

 

х1

0,7500

0,3021

0,5625

-0,1406

1,4740

-0,7708

 

х2

1,0000

0,3854

0,7500

-0,1875

1,9479

-0,4028

2

х3

0,6667

0,2569

0,2685

-0,2813

0,9109

-1,1250

 

х4

1,7500

0,1927

0,2014

0,8438

2,9879

0,5625

 

 

х1

0,7500

-1,4609

-0,4555

-0,7470

-1,9134

1,4740

 

х2

1,0000

-0,7370

-0,6073

-0,9960

-1,3402

1,9479

3

х3

0,6667

-0,4913

-1,2986

-1,4940

-2,6172

0,9109

 

х4

1,7500

-0,3685

-0,9740

-0,6832

-0,2756

2,9879

 

 

х1

0,7500

1,0052

1,3086

0,0689

3,1327

-1,9134

 

х2

1,0000

0,9567

1,7448

0,0919

3,7934

-1,3402

4

х3

0,6667

0,6378

0,8935

0,1378

2,3357

-2,6172

 

х4

1,7500

0,4784

0,6701

1,9629

4,8614

-0,2756

 

 

Решение, наиболее близкое к точному, получено из таблицы 3

 

Х1=1,4740

Х2=1,9479

Х3=0,9109

Х4=2,9879

 

Найдём :

 

xi

 

xi*

 

|xi-xi*|

0

 

1,474

 

1,474

1

 

1,9479

 

0,9479

-1

 

0,9109

 

1,9109

2

 

2,9879

 

0,9879

 

 

 

 

 

 

 

 

max

1,9109


(МПИ)=1,9109

 

2. Метод Зейделя

Сделаем расчет, используя SLAU.xls

 

х1

0,7500

0,0000

0,0000

0,0000

0,7500

0,0000

 

х2

1,0000

-0,3750

0,0000

0,0000

0,6250

0,0000

1

х3

0,6667

-0,2500

0,0000

0,0000

0,4167

0,0000

 

х4

1,7500

-0,1875

-0,3125

-0,3125

0,9375

0,0000

 

 

х1

0,7500

-0,4688

-0,2084

-0,2344

-0,1615

0,7500

 

х2

1,0000

0,0807

-0,2778

-0,3125

0,4904

0,6250

2

х3

0,6667

0,0538

-0,4167

-0,4688

-0,1649

0,4167

 

х4

1,7500

0,0404

-0,2452

0,1237

1,6688

0,9375

 

 

х1

0,7500

-0,7499

0,5000

-0,5000

0,0000

0,0000

 

х2

1,0000

0,0000

0,6666

-0,6667

0,9999

0,9999

30

х3

0,6667

0,0000

-0,6666

-1,0000

-0,9999

-0,9999

 

х4

1,7500

0,0000

-0,5000

0,7500

2,0000

2,0000

 

 

Решение, наиболее близкое к точному, получено на 30 шаге вычислений

 

Х1=0

Х2=0,9999

Х3=0,9999

Х4=2

 

Найдём :

 

xi

 

xi*

 

|xi-xi*|

0

 

0,0000

 

0,0000

1

 

0,9999

 

-0,0001

-1

 

-0,9999

 

0,0001

2

 

2,0000

 

0,0000

 

 

 

max

0,0001

 

=0,0001

 

Вывод: МПИ - быстрее сходится, но обладает меньшей точностью, чем метод Зейделя, который дольше сходится.

 



2020-03-19 245 Обсуждений (0)
Задание 1 Обусловленность матрицы 0.00 из 5.00 0 оценок









Обсуждение в статье: Задание 1 Обусловленность матрицы

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (245)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)