Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова 191.docx
Скачиваний:
1
Добавлен:
07.07.2019
Размер:
145 Кб
Скачать
☆

Іі.2. Розв’язок завдання в програмі Mathcad

ІІІ.

Обчислити визначник

Обрахунок визначників

Використання методу Гауса для обрахунку визначників

Операції по виконанню повного ходу методу Гауса у відповідності з теоремами лінійної алгебри не змінюють величини визначника. Очевидно, що визначник трикутної матриці рівний добутку її діагональних елементів. Таким чином, для обрахунку визначників квадратної матриці необхідно привести її до трикутного вигляду і знайти добуток її діагональних елементів. При цьому слід врахувати, що вибір головного елемента здійснюється перестановкою рядків матриці, кожна з перестановок змінює знак визначника на протилежний.

При малих діагональних елементах трикутної матриці перемноження їх може привести до зникнення порядку, при великих величинах діагональних елементів - до переповнення. Можливим шляхом подолання подібних ситуацій являється обрахування замість визначника логарифма його величини як суми логарифмів діагональних елементів. За допомогою наведеної програми можна обрахувати визначник квадратних матриць методом Гауса з вибором головного елемента матриць і обрахунок її визначника. Результат виводиться на дисплей.

ІІІ.1. Схема програми в С++

/*програма для обчислення визначник матриці розмірністю n*n*/

# include <stdio.h>

# include <math.h>

float a[50][50]; float d,c,z,f;

int i,j,k,n;

int main()

{

printf("\n Vvedit rosmirnosty matrizu s n= ");

scanf(" %d", &n);

printf("\n n= %d", n);

printf("\n Vvedit marizu A \n");

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

for(j=0; j<n; j++) scanf(" %f",&a[i][j]);

/*перевірка правильного вводу матриц*/

printf("\n matriza A=");

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

{ printf( "\n ");

for(j=0; j<n; j++) printf(" %f",a[i][j]);

}

/*Приведення матриці до трикутного вигляду*/

k=0;

m1: if (a[k][k]==0) for(i=k; i<n; i++) a[i][k]=a[i][k]+a[i][k+1];

for (i=k; i<=n-1; i++)

{

c=-a[i+1][k]/a[k][k];

for(j=k; j<n; j++) a[i+1][j]=a[k][j]*c+a[i+1][j];

}

k++;

if(k<n-1) goto m1;

d=1;

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

{

j=i;

d=d*a[i][j];

}

printf("\n determinant= =%f", d);

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

{ printf( "\n ");

for(j=0;j<n; j++) printf(" %f",a[i][j]);}

getchar();

getchar();

return 0;

printf("\n End task \n");

}

ІІІ.2. Розв’язок завдання в програмі Mathcad

Висновок

Курсова робота виконана. Тепер залишилось підбити підсумки зробленого. Ми мали за мету повторити і використати на практиці деякі методи для обчислення різних математичних задач. Це стосується обчислення інтегралів, матриць, визначників, знаходження коренів рівнянь парної і не парної кратності, та ін. Було заплановано розв’язати всі завдання у програмі MathCad, а потім скласти для відповідних завдань програми на мові С++. Хоч і виникали деякі проблеми при складанні програм, все-ж таки нам вдалось зробити так, щоб всі програми працювали і видавали потрібний результат. Я переконався, що в наш час краще всього використовувати електронні машини для виконання різних задач науки і техніки.

Література

1. Справочник по специальным функциям с формулами графиками и математическими таблицами / Под ред. М.Абрамовица и И.Стеган. – М: Наука. Глав. ред. физ. мат. лит. – 1979. - 830 с.

2. Крылов В.И. Приближенное вычисление интегралов. – М: Наука. Глав. ред. физ. мат. лит. – 1967. - 500 с.

3. М.К.Кучер “Лекції та лабораторні роботи по інформатиці”.

4.Дональд Кнут. The Art of Computer Programming, Volume 3: Sorting and Searching, Third Edition. Addison-Wesley, 1997. ISBN 0-201-89685-0. Pages 106–110 of section 5.2.2: Sorting by Exchanging.