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

    1. Исходные данные.

Вариант задания: 7.

i

1

2

3

4

5

xi

0.0

1.57

3.14

4.71

6.28

yi

0.0

0.5

1.0

2.0

4.0

φ1(x)

φ2(x)

φ3(x)

1

cos(x)

cos(2x)

    1. Критерий аппроксимации.

Условие минимума аппроксимации:

Взятие производной и формирование нормальных уравнений:

Первое уравнение:

Второе уравнение:

Третье уравнение:

    1. Система нормальных уравнений.

    1. Решение системы методом Гаусса.

    1. Результаты расчета.

С1=1.375

С2=0.499

С3=0.125

    1. Аппроксимирующая функция.

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

i

xi

yi

φ(xi)

δi=yi-φ(xi)

1

0.0

0.0

1.999

-1.999

2

1.57

0.5

1.25

-0.75

3

3.14

1.0

1

0.0

4

4.71

2.0

1.249

0.751

5

6.28

4.0

1.999

2.001

Минимальное значение качества аппроксимации:

Jmin=(-1.999)2 + (-0.75)2 +(0.0)2 +(0.751)2 +(2.001)2 = 9.127

Максимальное по модулю отклонение:

max при x = x5 = 6.28

    1. График.

Рис. 4.8.1. График аппроксимирующей функции. Исходные точки.

Построение графика выполнялось при помощи математического пакета MathCAD.

  1. Схемы алгоритмов.

    1. Схема алгоритма основного блока программы.

Рис. 5.1.1. Начало блок – схемы алгоритма.

Рис. 5.1.2. Конец блок – схемы алгоритма.

    1. Схема алгоритма функции решения системы уравнений.

Рис. 5.2.1. Блок – схема алгоритма процедуры.

  1. Текст программы.

#pragma argsused

#include <iostream.h>

#include <conio.h>

#include <math.h>

void GAUSS (float Z1[3][3], float Z2[3],int w,float Z3[3])

{int i,j,l,k,NUM;

float BIG,TEMP,Q,SUM;

for (i=0; i<w-1; i++)

{BIG=0;

NUM=-1;

for (l=i; l<w; l++)

if (abs(Z1[l][i])>abs(BIG))

{BIG=Z1[l][i];

NUM=l;}

if (NUM==-1)

{cout<<"Matrica virozhdennaya! \n";

break;}

if(NUM!=i)

{for (j=i; j<w; j++)

{TEMP=Z1[i][j];

Z1[i][j]=Z1[NUM][j];

Z1[NUM][j]=TEMP;}

TEMP=Z2[i];

Z2[i]=Z2[NUM];

Z2[NUM]=TEMP;}

for (k=i+1; k<w; k++)

{Q=Z1[k][i]/Z1[i][i];

Z1[k][i]=0;

for (j=i+1; j<w; j++)

Z1[k][j]=Z1[k][j]-Q*Z1[i][j];

Z2[k]=Z2[k]-Q*Z2[i];}}

Z3[w-1]=Z2[w-1]/Z1[w-1][w-1];

for (i=w-2; i>=0; i--)

{SUM=Z2[i];

for (j=i; j<w; j++)

SUM=SUM-Z1[i][j]*Z3[j];

Z3[i]=SUM/Z1[i][i];}}

int main()

{int i,j,k,l,m,n,imax;

float x[5],y[5],F0[5],DELTA[5];

float f[3][5], A[3][3],B[3],C[3];

float J0,max;

clrscr();

cout <<"Vvedite kolichestvo zadannix ishodnix tochek \n";

cin>>m;

cout <<"Vvedite kolichestvo zadannix ishodnix funkcii \n";

cin>>n;

cout <<"Vvedite znachenia X: \n";

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

cin >> x[i];

cout <<"Vvedite znachenia Y: \n";

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

cin >> y[i];

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

{f[0][i]=1;

f[1][i]=cos(x[i]);

f[2][i]=cos(2*x[i]);}

cout <<"Matrica koefficientov pri neizvestnix C1, C2, C3: \n";

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

{for (l = 0; l < n; l++)

{A[k][l]=0;

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

A[k][l]=A[k][l]+(f[k][i])*(f[l][i]);

cout<<A[k][l]<<" ";}

cout<<"\n";}

cout <<"Matrica-stolbez pravoi chasti sistemi uravnenii: \n";

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

{B[k]=0;

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

B[k]=B[k]+y[i]*f[k][i];

cout<<B[k]<<"\n";}

GAUSS(A,B,n,C);

cout<<"Znachenia koefficientov Ck: \n";

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

{cout<<"C"<<k+1<<"="<<C[k];

cout<<"\n";}

cout <<"Znachenia approksimiruyuwei funkcii v zavisimosti ot x[i]: \n";

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

{F0[i]=C[0]*f[0][i]+C[1]*f[1][i]+C[2]*f[2][i];

cout<<"F(x"<<i+1<<")="<<F0[i]<<"\n";}

cout <<"Znachenia otklonenii isxodnix tochek ot approksimiruyuwei funkcii: \n";

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

{DELTA[i]=y[i]-F0[i];

cout<<"DELTA"<<i+1<<"="<<DELTA[i]<<"\n";}

cout <<"Maksimalnoe po modulu otklonenie: \n";

max=DELTA[0];

imax=0;

for (i = 1; i < m; i++)

if (abs(DELTA[i])>abs(max))

{max=DELTA[i];

imax=i;}

cout<<"DELTAmax="<<max<<" pri x=x"<<imax+1<<"="<<x[imax]<<"\n";

cout <<"Minimalnoe znacyenie kachestva approksumacii: \n";

J0=DELTA[0]*DELTA[0];

for (i=1; i < m; i++)

J0=J0+DELTA[i]*DELTA[i];

cout<<"J0="<<J0<<"\n";

return 0;}

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