Мои Конспекты
Главная | Обратная связь

...

Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Решение системы линейных алгебраических уравнений методом Гаусса (метод исключений).





Помощь в ✍️ написании работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Представим исходную систему линейных алгебраическихуравнений (СЛАУ) в виде

(3.1)

Делим первое уравнение системы (3.1) на . В результате получим уравнение

, (3.2)

где .

Из второго уравнения системы (3.1) вычитаем уравнение (3.2), умноженное на , а из третьего уравнения системы (3.1) – уравнение (3.2), умноженное на . Получаем систему

(3.3)

где .

Делим первое уравнение системы (3.3) на . В результате получим уравнение

, (3.4)

где .

Умножая уравнение (3.4) на и вычитая его из второго уравнения системы (3.3), получаем

, (3.5)

где .

Наконец, разделив уравнение (3.5) на , получим

. (3.6)

Используя уравнения (3.4) и (3.2), находим последовательно
и .

Типовой вариант

Функция задана таблично:

-3 -1
2,9 1,0 -0,2 -1,5 -0,4 0,5 2,0

Реализация типового варианта

1. Расчет в среде программирования Delphi.

1.1. Создайте проект консольного приложения MNK.

1.2. Создайте текстовый файл исходных данных (File | New | Other) и сохраните его под именем MNK.txt (File | Save As…). Внесите в добавленный файл такие данные (рис. 3.1): MM = 2 – предельное значение степени аппроксимирующего полинома (m = 1, 2); N = 6 – количество точек табличной функции, учитывая что индексация точек начинается с 0 (I = 0, … , N); пары координат (Xi, Yi) точек табличной функции.

Рис. 3.1

1.3. Отредактируйте главную функцию.

program MNK;

{$APPTYPE CONSOLE}

uses

SysUtils,Math;

Type

mat=array of array of real;

vec=array of real;

Var

N:integer;// количество точек табличной функции (I = 0…N)

m:integer;// степень аппроксимирующего полинома Pm(x)

MM:integer;// предельная степень полинома (количество полиномов)

i,j:integer;// счетчики

X,Y:vec;// таблица данных X(N),Y(N)

C:vec;// массив коэффициентов аппроксимирующего полинома Pm(x)

A:mat;// матрица коэффициентов системы уравнений

fo:text;// файловая переменная

//----- процедура чтения табличной функции -----

procedure tab(var MM,N:integer;var X,Y:vec);

Var

i:integer;

fi:text;// файловая переменная

Begin

AssignFile(fi,'MNK.txt');// связывание файловой переменной

Reset(fi);// направление обмена данными – чтение

ReadLn(fi,MM,N);// чтение количества полиномов и

SetLength(X,N+1);// количества точек функции

SetLength(Y,N+1);

for i:=0 to N do// таблица данных X(N),Y(N)

ReadLn(fi,X[i],Y[i]);

CloseFile(fi);// закрытие файла

end;

 

//----- построение матрицы Грама A(m,m+1) ------

procedure Gram(N,m:integer; var X,Y:vec; var A:mat);

Var

i,j:integer;

p,q,r,s:real;

Begin

for j:=0 to m do// проход по строкам матрицы коэффициентов

begin// системы уравнений

s:=0.0;

r:=0.0;

q:=0.0;

for i:=0 to N do

Begin

p:=power(X[i],j);

s:=s+p;

r:=r+p*Y[i];

q:=q+p*power(X[i],m);

end;

A[0,j]:=s; // диагональный элемент матрицы

A[j,m+1]:=r;// свободный член

A[j,m]:=q;

end;

for i:=1 to m do

for j:=0 to m-1 do

A[i,j]:=A[i-1,j+1];

end;

 

//----- метод Гаусса для СЛАУ ------

procedure GA(m:integer; A:mat;var C:vec);

Var

i,j,k:integer;

r,s:real;

k1,n1:integer;

Begin

n1:=m+1;

for k:=0 to m do begin

k1:=k+1;

s:=A[k,k];

for j:=k1 to n1 do

A[k,j]:=A[k,j]/s;

for i:=k1 to m do begin

r:=A[i,k];

for j:=k1 to n1 do

A[i,j]:=A[i,j]-A[k,j]*r;

end;

end;

for i:=m downto 0 do begin

s:=A[i,n1];

for j:=i+1 to m do

s:=s-A[i,j]*C[j];

C[i]:=s;

end;

end;

 

//----- значение аппроксимирующего полинома в точке x1 ------

function fi(m:integer; c:vec; x1:real):real;

Var

i:integer;

p:real;

Begin

p:=c[m];// аппроксимирующaя функция

for i:=m-1 downto 0 do

p:=c[i]+x1*p;// полиномы Лежандра

fi:=p

end;

//----- основная программа ------

begin

AssignFile(fo,'MNK.out');// связывание файловой переменной

Rewrite(fo);

tab(MM,N,X,Y);

// построение полинома степени m

for m:=1 to MM do begin

SetLength(C,m+1);

SetLength(A,m+1,m+2);

Gram(N,m,X,Y,A);

writeln(fo,'Расширенная матрица коэффициентов A[i][j]:');

for i:=0 to m do begin

for j:=0 to m+1 do

write(fo,A[i][j]:8:3);

writeln(fo);

end;

GA(m,A,c);

writeln(fo,'Коэффициенты полинома Pm(x): ',m);

for i:=0 to m do

write(fo,' c[',i:1,']=',c[i]:7:3);

writeln(fo);

Finalize(C);

Finalize(A);

end;

Finalize(X);

Finalize(Y);

CloseFile(fo);// закрытие файла

end.

 

1.4. Откомпилируйте проект и выполните приложение F9.

1.5. Откройте файл MNK.outс результатами расчета командой File | Open и проанализируйте результаты в окне редактора (рис. 3.2).

Рис. 3.2

1.6. Постройте графики аппроксимирующих полиномов и табличную функцию (например в среде MathCad) (рис. 3.3).

Рис. 3.3

2. Аппроксимация в среде Excel.

2.1. Запустите на выполнение программу MS Excel. Создайте таблицу, в первые столбцы которой занесите таблично заданную функцию результатов наблюдений yi = f(xi). Заготовьте столбцы для множителей, суммы которых необходимы для вычисления коэффициентов аппроксимирующих полиномов (рис. 3.4).

Рис. 3.4

2.2. Для расчета столбца x^2 (возведения в квадрат) в ячейку D3 занесите формулу СТЕПЕНЬ (число; степень) (рис. 3.5).

Рис. 3.5

2.3. Вычислите остальные значения столбца D таблицы. Для этого необходимо поместить курсор в правый нижний угол ячейки D3 с формулой, нажать левую кнопку мыши и «протянуть» курсор по ячейкам D4–D9 столбца (рис. 3.6).

Рис. 3.6

2.4. Аналогично вычислите значения столбцов E–H (рис. 3.7).

Рис. 3.7

2.5. Для расчета суммы столбца со значениями x необходимо выделить курсором ячейку B10, нажать кнопку автоматического суммирования S на панели инструментов. Аналогично вычислите суммы элементов остальных столбцов (рис. 3.8).

Рис. 3.8

2.6. Постройте аппроксимирующий полином первой степени . Коэффициенты полинома находим из системы уравнений

2.7. Постройте таблицу коэффициентов системы уравнений
(рис. 3.9).

Рис. 3.9

2.8. Вычислите Ос – определитель системы для c (рис. 3.10).

Рис. 3.10

2.9. Вычислите Oa – определитель системы для а (рис. 3.11).

Рис. 3.11

2.10. Вычислите Ob – определитель системы для b (рис. 3.12).

Рис. 3.12

2.11. Соответствующие коэффициенты полинома первой степени будут такие: а = Oa/Оc; b = Ob/Оc (рис. 3.13).

Рис. 3.13

2.12. Теперь постройте аппроксимирующий полином второй степени . Для нахождения коэффициентов полинома необходимо решить такую систему уравнений:

2.13. Постройте таблицу коэффициентов системы уравнений и вычислите определитель системы Ос (рис. 3.14).

Рис. 3.14

2.14. Рассчитайте дополнительные определители системы Oa, Ob и Ос. Для этого занесите соответствующие формулы в ячейки G41, G46 и G51 (рис. 3.15).

Рис. 3.15

2.15. Соответствующие коэффициенты полинома второй степени будут такие: а = Oa/Od, b = Ob/Od и c = Ос/Od (рис. 3.16).

Рис. 3.16

2.16. Постройте таблицу значений функции для рисования совмещенного графика трех функций (рис. 3.17), куда занести начальные данные и значения полиномов первой и второй степени. Все три функции (строка y – исходная функция, строка P1(x) – полином первой степени, строка P2(x) – полином второй степени) базируются на единственной строке аргументов x.

Рис. 3.17

2.17. Постройте результирующую диаграмму (рис. 3.18).

Рис. 3.18

2.18. Проанализируйте полученные результаты.

3. Расчет в среде Mathcad.

3.1. Запустите на выполнение среду программирования Mathcad командой Пуск | Программы | Mathcad. Пользуясь соответствующими панелями инструментов, занесите начальные данные в окно документа Mathcad: количество точек табличной функции n, диапазон изменения индекса массивов xи в, а также элементы самих массивов.

3.2. Аппроксимация табличной функции многочленом первой степени .

Полная система уравнений для нахождения aиbимеет такой вид:

Внесем в документ Mathcad формулы для определения матрицы коэффициентов M1 и вектора V1 свободных членов системы уравнений:

Вычислите значение M1 и V1:

Если j– это вектор, состоящий из переменных aиb, то систему уравнений можно представить в виде M1× j = V1, а jнайти так:

Осталось вычислить коэффициенты полинома:

Внесите формулу полинома и вычислите его значение:

3.3. Аппроксимация функции многочленом второй степени .

Система уравнений для нахождения c, dи eимеет такой вид:

Расширенная матрица коэффициентов для нахождения с, dи e:

 

Если j– это вектор, состоящий из элементов c, d, e, то систему уравнений можно представить в виде M2×j=V2, а jвычислить так:

 

 

Внесите формулу полинома и вычислите его значение в табличных узлах:

Теперь можно построить сравнительный график функции:

3.4. Оценка погрешности аппроксимации.

Вычислите невязку для P1(x) и исходных данных:

Определите погрешность аппроксимации полиномом :

Рассчитайте невязку для P2(x) и исходных данных:

Вычислите погрешность аппроксимации полиномом :

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

3.5. Проанализируйте результаты расчета.

Раздел 2. ЛОКАЛИЗАЦИЯ МЕСТ ЭКСТРЕМАЛЬНЫХ ЗНАЧЕНИЙ КОНЦЕНТРАЦИИ ВРЕДНЫХ ПРИМЕСЕЙ В ОКРУЖАЮЩЕЙ СРЕДЕ

Доверь свою работу ✍️ кандидату наук!
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой



Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.