Курсовая работа: Аппроксимация экспериментальных зависимостей
Таблица 3
Т |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
DР |
10,529 |
7,4732 |
0,5482 |
4,59583 |
4,4839 |
10,591 |
7,625 |
10,6125 |
dP,% |
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 экспериментальное значение функции
Страницы: 1, 2, 3, 4, 5 |