Аппроксимация экспериментальных зависимостей
Аппроксимация экспериментальных зависимостей методом наименьших квадратов. Правило Крамера. Графическое отображение точек экспериментальных данных. Аномалии и допустимые значения исходных данных. Листинг программы на С++. Результаты выполнения задания.
Рубрика | Математика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 03.02.2011 |
Размер файла | 166,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Задание 1
Данные давления водорода Н2 на линии насыщения приведены в таблице. Сделать аппроксимацию экспериментальных данных в виде степенной функции и многочлена первой степени. Произвести сравнительный анализ ошибки аппроксимации полученной двумя функциями.
Таблица 1
Ts,0К |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
|
Pмм рт. ст. |
360,3 |
509,5 |
699,2 |
935,3 |
1223.7 |
1570,5 |
1981,8 |
2463,8 |
Аппроксимация экспериментальных зависимостей методом наименьших квадратов. Теоретические сведения
Пусть, в результате эксперимента получена зависимость.
Необходимо найти аналитическую формулу f = , которая аппроксимирует экспериментальную (табличную) зависимость.
Выберем зависимость в виде полинома 2 - й степени, т.е.
(1)
В выражении (1) коэффициенты , , подлежат определению, причем эти коэффициенты должны быть подобраны таким образом, чтобы зависимость наилучшим образом приближалась к экспериментальной зависимости. Пусть отклонение - различие между табличным значением в точке и значением аналитической функции в этой же самой точке, т.е.:
(2)
В соответствии с методом наименьших квадратов (МНК) наилучшими коэффициентами зависимости (1) будут такие, для которых сумма квадратов отклонений будет минимальной.
(3)
Используя необходимые условия существования экстремума для функций нескольких переменных , находим уравнение для определения коэффициентов зависимости (1).
(4)
Из условия (4) получим систему линейных алгебраических уравнений:
(5)
Решив систему (5) найдем коэффициенты аппроксимирующей зависимости (1).
Эффективным методом решения систем линейных алгебраических уравнений является матричный метод. Сущность его состоит в следующем.
Пусть А -- матрица коэффициентов системы уравнений, X -- вектор неизвестных, В -- вектор правых частей системы уравнений. Тогда решение системы уравнений в матричной форме будет иметь вид:
Х = А -1 В.
Правило Крамера
Если ранг матрицы совместной системы равен числу ее неизвестных, то система является определенной. Если число неизвестных системы совпадает с числом уравнений (m = n) и матрица системы невырожденная (det A ? 0), то система имеет единственное решение, которое находится по правилу Крамера:
В этих формулах ? = det А -- определитель системы, а ?k -- определитель, полученный из определителя системы заменой k-гo столбца столбцом свободных членов (k = 1, 2,..., n).
Решение системы трех линейных уравнений с тремя неизвестными можно выразить через определители:
, ,
Информационное обеспечение
Зависимость давления P водорода Н2 при различных температурах на линии насыщения приведены в таблице (1).
Для проведения анализа исходных данных с целью выбора вида аппроксимирующего многочлена построим график функции, заданной в табл.1. График приведен на рис.1.
Графическое отображение точек экспериментальных данных
Рис. 1. Экспериментальная зависимость P=f(T)
В результате анализа данных выберем в качестве аппроксимирующего многочлена параболу, заданную уравнением P2(x)=a0+a1x+a2x2.
Для определения коэффициентов a0, a1, a2 запишем систему уравнений вида
При составлении системы создадим вспомогательную таблицу данных (таблица 2).
Используя данные таблицы 2, систему уравнений (5) записываем в виде
В результате решения системы методом Крамера получаем следующие значения определителей:
detA = 56448;
detA1 = 1435933397;
detA2 = -94279012,8;
detA3 = 1564382,4;
Вычислив определители, рассчитываем значения коэффициентов:
a0 = detA1/ detA;
a1= detA2/detA;
a2 = detA3/ detA;
a0= 25438,1625;
a1= -1670,19226;
a2= 27,71369048.
Таким образом, искомый аппроксимирующий многочлен имеет вид:
(6)
Полученная аналитическая зависимость (6) обобщает экспериментальные данные табл.01.
Для оценки погрешности полученной зависимости составим таблицу значений P. Для этого определим давление P по формуле (6). Результаты внесем в таблицу 2.
Таблица 2
T |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
|
P |
370,8291668 |
502,0267858 |
688,6518 |
930,7042 |
1228,1839 |
1581,091 |
1989,4256 |
2453,188 |
Для оценки точности параболической аппроксимации сравниваем значения Р из табл.01 и табл.2. Модуль разности соответствующих значений представляет P-погрешность аппроксимации, значения которой представлены в табл.3. В таблице приведена также относительная погрешность Р, равная отношению Р к Р.
Таблица 3
Т |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
|
Р |
10,529 |
7,4732 |
0,5482 |
4,59583 |
4,4839 |
10,591 |
7,625 |
10,6125 |
|
P,% |
2,8393578 |
1,4886087 |
1,5317 |
0,4938 |
0,36509 |
0,6699 |
0,38331 |
0,4326 |
Сравнительный анализ погрешностей показывает, что полученная аналитическая зависимость удовлетворительно обобщает исходные экспериментальные данные.
Для интегральной оценки аппроксимации можно использовать формулу:
На рис. 2 приведены два графика, один из которых построен по данным аппроксимации (табл. 2), а второй - по исходным данным (табл.01).
Сравнивая эти графики, можно также отметить удовлетворительную сходимость теоретических и экспериментальных данных.
Выберем в качестве аппроксимирующего многочлена линейную функцию.
Аппроксимируем данную табличную зависимость многочленом первой степени P1(x)=a0+a1x
Для определения коэффициентов а0 , а1 необходимо составить систему уравнений
Подставив данные таблицы в систему уравнений получим:
Находим а0 и а1 методом Крамера:
а0 = -9343,52, а1 = 297,4798
Следовательно, искомый аппроксимирующий многочлен имеет вид
P= - 9342,52 + 297,4798T (7)
Формула (7) является аналитической зависимостью, обобщающей экспериментальные данные табл. 01.
Для оценки линейной аппроксимации необходимо сравнить значения yi из табл. 4 со значениями, полученными по формуле (7) для всех точек (i=1, 2, ..., 8). Результаты сравнения представлены в таблице 5.
Таблица 5
Проанализировав табл.5 можно сделать вывод, формула (7) не является корректной аналитической зависимостью, обобщающей экспериментальные данные табл. 01.
На рис.3 приведены график функции (7) и исходные экспериментальные данные. Сравнительный анализ показывает неудовлетворительную сходимость теоретических и экспериментальных данных.
Рис.5.3. График линейного аппроксимирующего многочлена и исходные данные.
Текст программы
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<graphics.h>
#include<stdio.h>
#define PATHTODRIVER "c:\egavga.bgi"
void GrafikPolinom(float, float, float, float, float, float );//Функция //построения графика полиномиальной аппроксимации экспериментальных данных
void GrafikLinear(float,float,float,float,float);//Функция построения
//графика линейной аппроксимации экспериментальных данных
void GRAPH_POINTS(float,float,float,float ); //Функция выводит на экран точки //экспериментальных данных
int GRAPH_MODE(); //Функция инициализации графического режима
void GRID(float, float);// Функция формирования координатной сетки
/*-------------------------------------------------------------------------*/
int main()
{ clrscr();
int n;
float tmpr,pwr; //текущие значения аргумента и функции
float discret; //дискретность изменения аргумента
float tn0, tn; //диапазон изменения аргумента tn0 - min, tn - max
float pn; //pn-max экспериментальное значение функции
float *dp = new float [n]; //Массив значений ошибок аппроксимации
float *P = new float [n]; //Массив значений //полученный аналитическим способом
float INTG = 0; //переменная, используемая в выражении //интегральной оценки аппроксимации
float A = 0, B = 0, C = 0, D = 0, E = 0, F = 0, G = 0;
float detA,i, detA1, detA2, detA3, A0,A2,A3;
int answer;
Ввод значений экспериментальных данных */ cout<<" Input number double values "<<endl;
cin>>n;
cout << " ENTER ARGUMENT VALUE " << endl;
float *t = new float [n]; //Массив значений аргумента (в данном случае - температура)
float *p = new float [n]; //Массив значений функции исследуемого процесса for( i=0;i<n;i++) {cout<<"Enter T"<<(i+1)<<"="; cin>>t[i]; }
cout <<" ENTER EXPERIMENTAL FNCTION VALUE"<<endl; for(i=0;i<n;i++) {cout<<"Enter P"<<(i+1)<<"="; cin>>p[i]; }
L:
cout <<" FOR DRAWING POINTS PRESS <1>\n" ;
cout <<" FOR FIND APROCSIMATION POLINOM FUNCTION INPUT <2>\n" ;
cout <<" FOR FIND APROCSIMATION LINEAR FUNCTION INPUT <4>\n" ;
cout <<" FOR FIND DRAWING POLINOM FUNCTION INPUT <3>\n" ;
cout <<" FOR FIND DRAWING LINEAR FUNCTION INPUT <5>\n" ;
cout <<" FOR EXIST INPUT <0>\n" ;
cin>>answer;
/* Графическое отображение экспериментальных данных в виде точек зависимости P = f(t) на координатной плоскости */
if (answer ==1)
{
int regimen = GRAPH_MODE();
if(regimen == 5)
{ tn0 = t[0]; tn = t[n-1];//tn-max экспериментальное значение температуры (аргумента) pn = p[n-1];//pn-max экспериментальное значение функции
GRID(tn,pn);
for(i = 0;i<n;i++)
{
tmpr= t[i];
pwr = p[i];
setbkcolor(1);
GRAPH_POINTS( tn,pn,tmpr,pwr );
} getch () ; closegraph(); // выход из графического режима
}
else
{ cout<<" Error code regimen = "<<regimen<<endl; getch(); closegraph();
} goto L;
}
/* Расчет функции аппроксимации экспериментальных данных в виде полинома 2 - й степени */
if(answer ==2) { for( i=0;i<n;i++) { A = A + t[i]; B = B + p[i]; C = C + t[i]*p[i]; D = D + t[i]*t[i]; E = E + t[i]*t[i]*p[i]; F = F + t[i]*t[i]*t[i]; G = G + t[i]*t[i]*t[i]*t[i]; } //
cout<<"A = "<<A<<" B = "<<B<<endl; //
cout<<"C = "<<C<<" D = "<<D<<endl; //
cout<<"E = "<<E<<" F = "<<F<<endl; //
cout<<"G = "<<G<<endl; /*n,A,B,C,D,E,F,G - коэффициенты многочленов для системы уравнений вида: n*(a0) + A*(a1) + D*(a2) = B A*(a0) + D*(a1) + F*(a2) = C D*(a0) + F*(a1) + G*(a2) = E */ // Решаем систему методом Крамера detA = n*D*G + A*F*D + D*A*F - D*D*D - A*A*G - n*F*F; detA1 = B*D*G + C*F*D + E*A*F - E*D*D - C*A*G - B*F*F; detA2 = n*C*G + A*E*D + D*B*F - D*C*D - A*B*G - E*F*n; detA3 = n*D*E + A*F*B + D*A*C - D*D*B - A*A*E - F*C*n; // cout << " detA = " << detA << " detA1 = " << detA1 << endl; // cout << " detA2 = " << detA2 << " detA3 = " << detA3 << endl; cout << " A0 = " << (A0 = detA1/detA) << endl; cout << " A2 = " << (A2 = detA2/detA) << endl; cout << " A3 = " << (A3 = detA3/detA) << endl;
cout << "APROCSIMATION POLINOM:" << endl; A2=A2; A3 = A3; cout << "P = (" << A0<<")+(" << (A2) << ")*T + (" << (A3) << ")*T^2" <<endl; for ( i=0; i<n; i++) { P[i] = A0 + A2*t[i] + A3*t[i]*t[i]; cout<<"P["<<i<<"]="<<P[i]<<" "; } cout<<"\n";
cout << " THE ABSOLUTE & RELATIVE MISTAKES OF APROCTIMATION \n"; for ( i=0; i<n; i++) { dp[i] = (P[i]-p[i]); cout<< "dP["<<i<<"]="<<(fabs(dp[i]))<<" dP(%)="<<(100*fabs(dp[i])/p[i])<<endl; }
cout <<" INTEGRAL LEVEL OF APROCTIMATION IS:\n" ;
for ( i=0; i<n; i++) { INTG = INTG + (dp[i])*dp[i]; } float ITG = sqrt(INTG/(n+1)); cout<<"ITG = "<<ITG<<"\n"; //интегральная оценка аппроксимации getch();
goto L; }
/* Графическое отображение, полученной зависимости P = f(t) в виде полинома 2 степени, на координатной плоскости */
if(answer == 3) {
int regimen = GRAPH_MODE();
if(regimen == 5)
{ tn0 = t[0]; tn = t[n-1];//tn-max экспериментальное значение температуры (аргумента) pn = p[n-1];//pn-max экспериментальное значение функции
GRID(tn,pn);
setbkcolor(1);
GrafikPolinom(A0, A2, A3,tn0,tn,pn );
for(i = 0;i<n;i++)
{
tmpr= t[i];
pwr = p[i];
GRAPH_POINTS( tn,pn,tmpr,pwr );
} getch () ; closegraph(); // выход из графического режима
}
else
{ cout<<" Error code regimen = "<<regimen<<endl; cout << "Dont find driver or driver damaged\n" ; /*В этом месте cделать возврат в главное меню*/ getch(); closegraph();
}
goto L;
}
/*-------------------------------------------------------------------------*/ /* Расчет линейной функции аппроксимации экспериментальных данных */ cout<<" II. LINEAR APROCTIMATION " <<endl; float R = 0, R2 = 0, B0, B1; float SCp = 0, Cpi = 0, detB, detB1, detB2; float* dCp = new float [n];; float* ACp = new float [n];; float INTGL = 0; if(answer == 4) { for ( i=0;i<n;i++) { R = R+t[i]; SCp = SCp + p[i]; R2 = R2 + t[i]*t[i]; Cpi = Cpi + p[i]*t[i]; } // cout << " R =" << R << " SCp =" << SCp << endl; // cout << " R2 =" << R2 << " Cpi =" << Cpi << endl; /*n, R, SCp, R2, Cpi - коэффициенты в уравнениях для системы вида (А0)*n + (A1)*R = SCp (A0)*R + (A1)*R2 = Cpi */ detB = n*R2 - R*R; detB1 = SCp*R2 - R*Cpi; detB2 = n*Cpi - R*SCp; // cout<<"detB = "<<detB<<" detB1 = "<<detB1<<"detB2 = "<<detB2<<"\n"; B0 = detB1/detB; B1 = detB2/detB; // cout << " B0 =" << B0 << endl; // cout << " B1 =" << B1 << endl; cout << " APROCTIMATION LINEAR POLINOM" << endl; cout<<"F =("<<B0<<") + ("<<B1<<")*T" << endl; for (i = 0; i<n;i++) { ACp[i] = B0 + B1* t[i]; cout <<"ACp["<<i<<"]=" <<ACp[i]<<endl; } for ( i = 0; i<n;i++) { dCp[i] = ACp[i] - p[i]; cout<< "dCp["<<i<<"]="<<(fabs(dCp[i]))<<" dCp(%)="<<(100*fabs(dCp[i])/p[i])<<endl; } cout <<" INTEGRAL LEVEL OF APROCTIMATION IS:\n" ; for ( i=0; i<n; i++) { INTGL = INTGL + (dCp[i])*(dCp[i]); } float ITGL = sqrt(INTGL/(n+1)); cout<<"ITGL = "<<ITGL<<"\n"; cout<<" "<<"\n"; getch(); goto L; }
Графическое отображение, полученной зависимости P = f(t) в виде линейной функции аппроксимации на, координатной плоскости */
if(answer==5)
{
int regimen = GRAPH_MODE();
if(regimen == 5)
{ tn0 = t[0]; tn = t[n-1]; tn = t[n-1]; pn = p[n-1]; GRID(tn,pn);
setbkcolor(1);
GrafikLinear( B0,B1,tn0,tn,pn );
for(i=0;i<n;i++)
{tmpr = t[i]; pwr = p[i]; GRAPH_POINTS(tn,pn,tmpr,pwr);
} getch () ; closegraph(); // выход из графического режима
}
else
{ cout << " Error code regimen = "<<regimen<<endl; cout << "Dont find driver or driver damaged\n" ; getch();
} goto L;
}
return 0;
}
* Функция вывода на координатную плоскость графика функции 2-й степени */
void GrafikPolinom(float A0, float A2, float A3,float tn0,float tn, float pn )
{
float x,dx; // аргумент и его приращение
float xl,x2; // диапазон изменения аргумента
float y; // значение функции
float mx,my; // масштаб по X и Y - кол-во точек экрана, соответствующих // единице по осям координат
int x0,y0; // начало осей координат
float px,py; // координаты точки графика на экране
x0 = 50;
y0 = 400;
mx = 630/(2*tn);
my = 470/(2*pn);
// оси координат
line(10,y0,630,y0);
line(x0,10,x0,470);
// график
xl = tn0;
x2 = tn;
dx = 0.01;
x = xl;
while ( x < x2 )
{
y =A3*x*x + A2*x+A0; // функция
px = x0 + x*mx;
py = y0 - y*my;
putpixel(px,py, WHITE);
x += dx;
}}
int GRAPH_MODE()
{
int grdriver = DETECT; // драйвер
int grmode; // режим
int errorcode; // код ошибки
initgraph(&grdriver, &grmode, PATHTODRIVER);
errorcode = graphresult();
if (errorcode != grOk) // ошибка инициализации графического режима
{
printf("ERROR: dont find driver or driver damaged \n", errorcode);
puts("PRESS <Enter>");
getch();
return(-10);
}
else
{ return(5);
}}
/* Функция вывода на координатную плоскость графика линейной функции */ void GrafikLinear(float B0, float B1,float tn0, float tn, float pn ) {
float x,dx; // аргумент и его приращение
float xl,x2; // диапазон изменения аргумента
float y; // значение функции
float mx,my; // масштаб по X и Y - кол-во точек экрана, соответствующих // единице по осям координат
int x0,y0; // начало осей координат
float px,py; // координаты точки графика на экране
x0 = 50;
y0 = 400;
mx = 630/(2*tn);
my = 470/(2*pn);
// оси координат
line(10,y0,630,y0);
line(x0,10,x0,470);
// график
xl = tn0;
x2 = tn;
dx = 0.01;
x = xl;
while ( x < x2 )
{
y = B1*x+B0; // линейная функция
px = x0 + x*mx;
py = y0 - y*my;
putpixel(px,py, WHITE);
x += dx;
}}
/* Функция вывода точек экспериментальной зависимости на экран */ void GRAPH_POINTS(float tn,float pn,float tmpr,float pwr )
{
float x; // аргумент
float y; // значение функции
float mx,my; // масштаб по X и Y - кол-во точек экрана, соответствующее // единице по осям координат
int x0 = 50;
int y0 = 400;
mx = 630/(2*tn); //tn-max экспериментальное значение температуры (аргумента)
my = 470/(2*pn); //pn-max экспериментальное значение функции
y = y0 - pwr*my ;
x = x0 + tmpr*mx ;
setcolor(13);
circle(x,y,2);
}
/* Функция формирования координатной сетки и расчета масштаба по X и Y*/ void GRID(float tn, float pn)
{
int x0,y0; // координаты начала координатных осей
int dx,dy; // шаг координатной сетки (в пикселях)
int h,w; // высота и ширина области вывода координатной сетки int x,y;
float lx,ly; float dlx,dly; char st [8];
// метки линий сетки по X и Y
// шаг меток линий сетки по X и Y
// изображение метки линии сетки
x0 = 50; y0 = 400; // оси начинаются в точке (50,400)
dx = 40; dy = 40; // шаг координатной сетки 40 пикселей
dlx =1; // шаг меток оси X метками будут: 1, 2, 3 ...
dly =1; // шаг меток оси Y метками будут: 1, 2, 3 ...
h = 360; w = 560;
lx = 0; ly =0; //в начало координат ставятся метки 0
cout<<" MX = 1 : "<< 2*tn/14 <<"\n"; //масштаб по Х
cout<<" MY = 1 : "<< 2*pn/9 <<"\n"; //масштаб по Y
// засечки, сетка и оцифровка
int x = x0;
do
{
// засечка
sprintf(st,"%2.1f",lx);
outtextxy(x-8,y0+5,st);
lx += dlx;
// линия сетки
setlinestyle (DOTTED_LINE, 0, 1);
line(x,y0-3,x,y0-h);
x += dx; } while (x < x0+w);
// засечки, сетка и оцифровка по оси Y
int y = y0;
do
{
// оцифровка
sprintf(st,"%2.1f",ly) ;
outtextxy(x0-40,y, st) ;
ly += dly;
// линия сетки
setlinestyle(DOTTED_LINE, 0, 1);
line(x0+3,y,x0+w,y) ;
setlinestyle(SOLID_LINE, 0, 1);
y -= dy; } while (y > y0-h);
} ;
Результаты тестирования
Для проверки правильности вычисления аналитической формулы 2 - й степени, которая аппроксимирует экспериментальную (табличную), зависимость, выведем на экран:
- значения определителей [detA, detA1, detA2, detA3] полученных при решении системы линейных уравнений и значения коэффициентов [A0, A2, A3] в аналитической формуле, рассчитанные программой при выборе аппроксимирующего многочлена 2 - й степени;
- вспомогательные данные [A, B, C, D, E, F, G] необходимые для вычисления уравнения функции аппроксимации экспериментальных данных 2 - й степени;
При тестировании получены следующие величины вышеперечисленных значений:
A = 284;
B = 97744,099609;
C = 358409,6875;
D = 10124;
E =13222899;
F = 362384;
G = 13023812;
detA = 56448;
detA 1= 1,436059 *109 ;
detA 2= - 9,42861 * 107 ;
detA3 = 1564482,25;
A0 = 25440,380859;
A1 = -1670,317871;
A2 = 27,71546;
Аппроксимирующий полином:
P = 25440,380859 - 1670,317871*T + 27,71546*T2;
Данная аналитическая зависимость, обобщает экспериментальные данные табл. 01.
Для проверки правильности вычисления аналитической формулы 1 - й степени, которая аппроксимирует экспериментальную (табличную), зависимость, выведем на экран:
- значения определителей [detВ, detВ1, detВ2] полученные при решении системы линейных уравнений и значения коэффициентов [В0, В1] в аналитической формуле, рассчитанные программой при выборе аппроксимирующего многочлена 1 - й степени;
- вспомогательные данные [R, SCp, R2, Cpi ] необходимые для вычисления уравнения функции аппроксимации экспериментальных данных 1 - й степени;
R = 284;
SCp = 9744,099609;
R2 = 10124;
Cpi = 358409,6875;
detВ = 336;
detВ1 = - 3139086,75;
detВ2 = 99953,210937;
B0 = - 9342,52058;
B1 = 297,479797;
Аппроксимирующая функция
P = - 9342,52058 + 297,479797*T/
Данная аналитическая зависимость, неудовлетворительно обобщает экспериментальные данные табл.01.
Аномалии и допустимые значения исходных данных.
В результате тестирования программы выявлены следующие её особенности:
1. Допустимые значения исходных данных лежат в пределах [-10000000; +10000000];
2. При больших значениях аргумента вычерчивание графика замедляется;
3. При значениях исходных данных в пределах 10-9 - график функции может быть не виден вследствие слишком мелкого масштаба.
Результаты выполнения задания
1. После ввода выходных данных, перед проведением вычислений для выбора вида аппроксимирующей функции представим экспериментальные данные в графическом виде (СНИМОК I).
2. При вычислении аппроксимирующей функции 2 -й степени программа вывела на экран (СНИМОК II ) :
- вид аппроксимирующего полинома: P = 25440,380859 - 1670,317871*T + 27,71546*T2;
- dP и dP(%) - ошибки аппроксимации .Сравнительный анализ погрешностей показывает, что полученная аналитическая зависимость удовлетворительно обобщает исходные экспериментальные данные. Максимальная ошибка аппроксимации уPmax = 10,539856(2,9253%), минимальная - уPmin = 4,473511 (0,365573%);
- ITG - интегральную оценку аппроксимации. Для интегральной оценки аппроксимации использована формула:
ITG ==8,179605;
После завершения вычислений построим график аппроксимирующей функции и сравним его с графиком, построенным по выходным данным таблицы 01. Сравнивая графики можно определить хорошую сходимость теоретических и экспериментальных
3. При вычислении аппроксимирующей функции 1 - й степени программа вывела на экран
- вид аппроксимирующего полинома:
P = - 9342,520508 + 297,479797*T;
- dCP и dCP(%) -абсолютную и относительную ошибки аппроксимации. Сравнительный анализ погрешностей показывает, что полученная аналитическая зависимость неудовлетворительно обобщает исходные экспериментальные данные.
Максимальная абсолютная ошибка аппроксимации
dCP - уPmax = 204,608398(8,3045868%),
минимальная абсолютная ошибка аппроксимации
dCP - уPmin = 20,088257(1,013637%).
Максимальная относительная ошибка аппроксимации
dCp(%) - уPmax = 50,920618% (183,46698),
минимальная относительная ошибка аппроксимации
dCp(%) - уPmin = 1,013637%(20,088257).
- ITGL - интегральную оценку аппроксимации.
ITGL = 120,015892;
После завершения вычислений построим график аппроксимирующей функции и сравним его с графиком, построенным по выходным данным таблицы 01. Сравнивая графики, а также значения
dCP , dCP(%) и ITGL можно определить неудовлетворительную сходимость теоретических и экспериментальных данных.
4. После запуска программы на экране появляется приглашение < Enter input dates> , предлагающее пользователю ввести количество пар входных данных, после чего выводится строка ввода значений аргумента <ENTER EXPERIMENTAL ARGUMENT VALUE> и затем значений экспериментальной зависимости <ENTER EXPERIMENTAL DEPENDENCY VALUE> .
После ввода данных на экран выводится меню:
FOR DRAWING POINTS INPUT <1>;
FOR FIND APROCSIMATION POLINOM FUNCTION INPUT <2>;
FOR DRAWING THE GRAPHIC OF POLINOM FUNCTION INPUT <3>;
FOR FIND APROCSIMATION LINEAR FUNCTION INPUT <4>;
FOR DRAWING THE GRAPHIC OF LINEAR FUNCTION INPUT<5>;
FOR EXIST INPUT <0>,
состоящее из 6 пунктов, выбрав один из которых можно произвести соответствующие операции, указанные в аннотации:
- FOR DRAWING POINTS INPUT <1> - позволяет произвести графическое отображение экспериментальных данных в виде точек зависимости P = f(t) на координатной плоскости ;
FOR FIND APROCSIMATION POLINOM FUNCTION INPUT <2> - позволяет произвести расчет функции аппроксимации экспериментальных данных в виде полинома 2 - й степени;
FOR DRAWING THE GRAPHIC OF POLINOM FUNCTION INPUT <3> - позволяет построить графическое отображение, полученной зависимости P = f(t) в виде аппроксимирующего многочлена 2 степени, на координатной плоскости;
FOR FIND APROCSIMATION LINEAR FUNCTION INPUT <4> - позволяет произвести расчет линейной функции аппроксимации экспериментальных данных;
FOR DRAWING THE GRAPHIC OF LINEAR FUNCTION INPUT <5> - позволяет построить графическое отображение, полученной зависимости P = f(t) в виде линейной функции аппроксимации на, координатной плоскости;
FOR EXIST INPUT <0> - предлагает выйти из программы:
Вывод
Данная программа позволяет произвести аппроксимацию экспериментальных зависимостей методом наименьших квадратов с отображением результатов аппроксимации в текстовом и графическом режимах. Программа позволяет оценить точность аппроксимации и произвести сравнительный анализ типов аппроксимации ( с помощью многочлена 2 - й степени или с помощью многочлена 1 - й степени ).
Список литературы
Яремчук Ф.П., Рудченко П.А. АЛГЕБРА И ЭЛЕМЕНТАРНЫЕ ФУНКЦИИ - Киев, НАУКОВА ДУМКА, 1987, 647.
Глушаков С.В., Сурядный А.С. MICROSOFT EXCEL XP - Харьков, ФИЛИО, 2006, 508.
Дорош Н.Л., Бартенев Г.Л. и др. Методические указания к выполнению индивидуальных заданий и курсовой работы по дисциплинам "Информатика" и "Вычислительная математика". Днепропетровск, УДХТУ, 2004, 47.
Подобные документы
Интерполяция (частный случай аппроксимации). Аппроксимация функцией. Метод наименьших квадратов. Из курса математики известны 3 способа задания функциональных зависимостей: аналитический, графический, табличный.
реферат [70,4 K], добавлен 26.05.2006Особенности метода аппроксимации табулированных функций. Рассмотрение преимуществ работы в среде математической программы Mathcad. Метод наименьших квадратов как наиболее распространенный метод аппроксимации экспериментальных данных, сферы применения.
курсовая работа [1,2 M], добавлен 30.09.2012Исследование вопросов построения эмпирических формул методом наименьших квадратов средствами пакета Microsoft Excel и решение данной задачи в MathCAD. Сравнительная характеристика используемых средств, оценка их эффективности и перспективы применения.
курсовая работа [471,3 K], добавлен 07.03.2015Постановка задачи аппроксимации методом наименьших квадратов, выбор аппроксимирующей функции. Общая методика решения данной задачи. Рекомендации по выбору формы записи систем линейных алгебраических уравнений. Решение систем методом обратной матрицы.
курсовая работа [77,1 K], добавлен 02.06.2011Аппроксимация функции y = f(x) линейной функцией y = a1 + a2x. Логарифмирование заданных значений. Расчет коэффициентов корреляции и детерминированности. Построение графика зависимости и линии тренда. Числовые характеристики коэффициентов уравнения.
курсовая работа [954,7 K], добавлен 10.01.2015Оценка неизвестных величин по результатам измерений, содержащим случайные ошибки, при помощи метода наименьших квадратов. Аппроксимация многочленами, обзор существующих методов аппроксимации. Математическая постановка задачи аппроксимации функции.
курсовая работа [1,9 M], добавлен 12.02.2013Разделенные разности и аппроксимация функций методом наименьших квадратов. Интерполяционные многочлены Лагранжа и Ньютона. Экспериментальные данные функциональной зависимости. Система уравнений для полинома. Графики аппроксимирующих многочленов.
реферат [139,0 K], добавлен 26.07.2009Изучение аппроксимации таблично заданной функции методом наименьших квадратов при помощи вычислительной системы Mathcad. Исходные данные и функция, вычисляющая матрицу коэффициентов систему уравнений. Выполнение вычислений для разных порядков полинома.
лабораторная работа [166,4 K], добавлен 13.04.2016Механизм и основные этапы нахождения необходимых параметров методом наименьших квадратов. Графическое сравнение линейной и квадратичной зависимостей. Проверка гипотезы о значимости выборочного коэффициента корреляции при заданном уровне значимости.
курсовая работа [782,6 K], добавлен 19.05.2014Понятие, виды и методы планирования экспериментальных исследований. Предварительная обработка экспериментальных данных, компьютерные методы статистической обработки и анализ результатов пассивного эксперимента, оценка погрешностей результатов наблюдений.
книга [3,1 M], добавлен 13.04.2009