51485

ИНТЕРПОЛЯЦИЯ

Лабораторная работа

Информатика, кибернетика и программирование

В данной работе был рассмотрен метод наименьших квадратов для интерполяции функции, заданной при помощи выборки ее значений в нескольких точках

Русский

2014-02-11

114 KB

1 чел.

Министерство образования и науки Украины

Приазовский государственный технический университет

Факультет информационных технологий

Кафедра автоматизации технологических процессов и производств

ОТЧЕТ

по лабораторной работе № 3

«ИНТЕРПОЛЯЦИЯ»

по дисциплине «Адаптивные системы АУТП»

Выполнил

студ. гр. КИТ-11-М    (подпись, дата)   Бабаенко Д.А.

Принял

профессор     (подпись, дата)   Зайцев В.С.

Мариуполь, 2011


Лабораторная работа № 3

Цель работы: изучить способы интерполяции функций, реализовать метод наименьших квадратов для интерполяции заданной выборки.

Ход работы:

Соответственно номеру варианта имеем выборку чисел:

X

1

2

3

4

5

6

7

Y

1.92

2.19

1.67

2.20

2.27

2.21

2.40

Задание 1:  занесем в окно MatLab следующий код программы:

%  interpolation

% method of splines

x=[1 2 3 4 5 6 7];

y=[1.92 2.19 1.67 2.20 2.27 2.21 2.40];

plot(x,y,'ko')

xi=[x(1):0.01:x(length(x))];

ynear=interp1(x,y,xi,'nearest');

yline=interp1(x,y,xi,'linear');

yspline=interp1(x,y,xi,'spline');

hold on

plot(xi,ynear,'k',xi,yline','k:',xi,yspline,'k-.')

title('different ways of interpolation of functions')

xlabel('\itx')

ylabel('\ity')

legend('tabulare function', 'nearest', 'linear', 'spline',4)

p4=polyfit(x,y,4)

p5=polyfit(x,y,5)

p6=polyfit(x,y,6)

Результатом работы будут следующие графики:

Рисунок 1 – Результат выполнения задания 1


Задание 2:  занесем в окно
MatLab следующий код программы:

%  interpolation

d=[1 2 3 4 5 6 7];

g=[1.92 2.19 1.67 2.20 2.27 2.21 2.40];

p1=polyfit(d,g,1);

p2=polyfit(d,g,2)

p3=polyfit(d,g,3);

p4=polyfit(d,g,4)

p5=polyfit(d,g,5);

p6=polyfit(d,g,6);

x=(0.1:0.02:7);

v=0.0117*x.^2-0.0190*x+1.9657;

s=-0.0027*x.^4+0.0385*x.^3-0.1708*x.^2+0.2973*x+1.8057;

hold on;

plot(x,v,x,s,d,g,'ko')

Результатом работы будут следующие графики:

Рисунок 2 – Результат выполнения задания 2


Реализовав алгоритм интерполяции на языке С++, получаем следующие результаты ее работы:

Рисунок 3 – Результат работы программы

Как видно на рисунке, результаты расчетов Мatlab и программы совпадают. Текст программы приведен в приложении 1.


Приложение 1

#include <stdio.h>

#include <conio.h>

#include <process.h>

#include <math.h>

float *a, *b, *x, *y, **sums;

int N, K;

//N - number of data points

//K - polinom power

//K<=N

char filename[256];

FILE* InFile=NULL;

void count_num_lines(){

  //count number of lines in input file - number of equations

  int nelf=0;       //non empty line flag

  do{

      nelf = 0;

      while(fgetc(InFile)!='\n' && !feof(InFile)) nelf=1;

      if(nelf) N++;

  }while(!feof(InFile));

}

void freematrix(){

  //free memory for matrixes

  int i;

  for(i=0; i<K+1; i++){

      delete [] sums[i];

  }

  delete [] a;

  delete [] b;

  delete [] x;

  delete [] y;

  delete [] sums;

}

void allocmatrix(){

  //allocate memory for matrixes

  int i,j,k;

  a = new float[K+1];

  b = new float[K+1];

  x = new float[N];

  y = new float[N];

  sums = new float*[K+1];

  if(x==NULL || y==NULL || a==NULL || sums==NULL){

      printf("\nNot enough memory to allocate. N=%d, K=%d\n", N, K);

      exit(-1);

  }

  for(i=0; i<K+1; i++){

      sums[i] = new float[K+1];

      if(sums[i]==NULL){

   printf("\nNot enough memory to allocate for %d equations.\n", K+1);

      }

  }

  for(i=0; i<K+1; i++){

      a[i]=0;

      b[i]=0;

      for(j=0; j<K+1; j++){

   sums[i][j] = 0;

      }

  }

  for(k=0; k<N; k++){

      x[k]=0;

      y[k]=0;

  }

}

void readmatrix(){

  int i=0,j=0, k=0;

  //read x, y matrixes from input file

  for(k=0; k<N; k++){

      fscanf(InFile, "%f", &x[k]);

      fscanf(InFile, "%f", &y[k]);

  }

  //init square sums matrix

  for(i=0; i<K+1; i++){

      for(j=0; j<K+1; j++){

   sums[i][j] = 0;

   for(k=0; k<N; k++){

       sums[i][j] += pow(x[k], i+j);

   }

      }

  }

  //init free coefficients column

  for(i=0; i<K+1; i++){

      for(k=0; k<N; k++){

   b[i] += pow(x[k], i) * y[k];

      }

  }

}

void printresult(){

  //print polynom parameters

  int i=0;

  printf("\n");

  for(i=0; i<K+1; i++){

      printf("a[%d] = %f\n", i, a[i]);

  }

}

/*void testsolve(){

  //test that ax=y

  FILE* OutFile;

  int i=0, j=0;

  float sum, s, begin, end, step;

  begin = x[0][1];

  end = x[N-1][1];

  step = (end-begin)/20;

  printf("\n");

  for(i=0; i<N; i++){

      sum = 0;

      for(j=0; j<N; j++){

   sum += x[i][j]*a[j];

      }

      printf("%f\t%f\n", s, y[i]);

  }

  OutFile = fopen("test.txt", "wt");

  for(s = begin; s<=end; s+=step){

      sum = 0;

      for(j=0; j<N; j++){

   sum += pow(s, j)*a[j];

      }

      fprintf(OutFile, "%f\t%f\n", s, sum);

  }

  fclose(OutFile);

}*/

/*void printresult(){

  int i=0;

  printf("\n");

  printf("Result\n");

  for(i=0; i<N; i++){

      printf("A%d = %f\n", i, a[i]);

  }

}*/

void diagonal(){

  int i, j, k;

  float temp=0;

  for(i=0; i<K+1; i++){

      if(sums[i][i]==0){

   for(j=0; j<K+1; j++){

       if(j==i) continue;

       if(sums[j][i] !=0 && sums[i][j]!=0){

    for(k=0; k<K+1; k++){

        temp = sums[j][k];

        sums[j][k] = sums[i][k];

        sums[i][k] = temp;

    }

    temp = b[j];

    b[j] = b[i];

    b[i] = temp;

    break;

       }

   }

      }

  }

}

void cls(){

  for(int i=0; i<25; i++) printf("\n");

}

void main(){

  int i=0,j=0, k=0;

  cls();

  do{

      printf("\nInput filename: ");

      scanf("%s", filename);

      InFile = fopen(filename, "rt");

  }while(InFile==NULL);

  count_num_lines();

  printf("\nNumber of points: N=%d", N);

  do{

      printf("\nInput power of approximation polinom K<N: ");

      scanf("%d", &K);

  }while(K>=N);

  allocmatrix();

  rewind(InFile);

  //read data from file

  readmatrix();

  //check if there are 0 on main diagonal and exchange rows in that case

  diagonal();

  fclose(InFile);

  //printmatrix();

  //process rows

  for(k=0; k<K+1; k++){

      for(i=k+1; i<K+1; i++){

   if(sums[k][k]==0){

       printf("\nSolution is not exist.\n");

       return;

   }

   float M = sums[i][k] / sums[k][k];

   for(j=k; j<K+1; j++){

       sums[i][j] -= M * sums[k][j];

   }

   b[i] -= M*b[k];

      }

  }

  //printmatrix();

  for(i=(K+1)-1; i>=0; i--){

      float s = 0;

      for(j = i; j<K+1; j++){

   s = s + sums[i][j]*a[j];

      }

      a[i] = (b[i] - s) / sums[i][i];

  }

  //InFile = fopen(filename, "rt");

  //readmatrix();

  //fclose(InFile);

  //printmatrix();

  //testsolve();

  printresult();

  getch();

  freematrix();

}


Вывод:
в данной работе был рассмотрен метод наименьших квадратов для интерполяции функции, заданной при помощи выборки ее значений в нескольких точках.


 

А также другие работы, которые могут Вас заинтересовать

65415. Робота утримувальної протизсувної споруди у вигляді паль-шпонок 1.85 MB
  Для досягнення мети дослідження були поставлені такі завдання: систематизувати й узагальнити наявні дані за регіональними особливостями конструкцій пальових ПС методами їх розрахунку як у зсувній товщі так і в закладанні в стійких незміщуваних ґрунтах Криму...
65416. Конструктивно-технологічні рішення відновлення несучої здатності пошкоджених панелей обшивки літака шляхом приформування композитної накладки 5.08 MB
  Результати досліджень провідних світових організацій довели що в цих випадках раціональним методом ремонтубільшості технологічних та експлуатаційних дефектів є приформування ремонтної накладки з полімерного композиційного матеріалу ПКМ.
65417. ПІДВИЩЕННЯ ЕФЕКТИВНОСТІ ВАНТАЖОПЕРЕВЕЗЕНЬ ШЛЯХОМ УДОСКОНАЛЕННЯ ЇХ ОРГАНІЗАЦІЇ ТА ІНФОРМАЦІЙНОГО ЗАБЕЗПЕЧЕННЯ НА ПРОМИСЛОВОМУ ТРАНСПОРТІ 238.5 KB
  Термін виконання цих послуг суттєво впливає на вартість кінцевого продукту і значно залежить від інформаційного забезпечення усіх процесів які відбуваються на промисловому транспорті при формуванні чи розпилу вантажопотоків починаючи...
65418. ОЧИЩЕННЯ ВОДИ ВІД МІКРОМІЦЕТІВ 3.36 MB
  Вода завжди вважалася джерелом розповсюдження ряду збудників небезпечних захворювань. Кількість таких захворювань, які передаються водним шляхом, катастрофічно збільшується. Погіршення якості води в джерелах водопостачання призводить до зниження санітарно-гігієнічних показників питної води...
65419. РОЗВИТОК ЗЕМСЬКОЇ ОСВІТИ НА ЛІВОБЕРЕЖНІЙ УКРАЇНІ (ДРУГА ПОЛОВИНА ХІХ – ПОЧАТОК ХХ ст.) 214.5 KB
  Роботу виконано на кафедрі педагогіки імені Богдана Ступарика Прикарпатського національного університету імені Василя Стефаника Міністерство освіти і науки України. У період модернізації національної системи освіти шляхом створення...
65420. УДОСКОНАЛЕННЯ ТЕХНОЛОГІЇ ТАМПОДРУКУ ТА ФЛЕКСОГРАФІЧНОГО ДРУКУ НА ПОЛІМЕРНИХ ВИРОБАХ ТА ПЛІВКАХ 687.5 KB
  Метою і завданням дослідження є удосконалення технології тамподруку та флексографічного друку на полімерних плівках і виробах шляхом їх попередньої обробки для зміни поверхневих властивостей з метою поліпшення якості відбитків.
65421. Роль йодного дефіциту та гіпотиреозу в розвитку метаболічного синдрому у хворих на цукровий діабет 2 типу 484 KB
  Слід також наголосити що стан тиреоїдного метаболізму структурних змін ЩЗ у хворих МС вивчені недостатньо. Отже необхідність удосконалення способів діагностики та лікування хворих на МС з ЦД типу 2 зумовлена тим що до останнього часу при лікуванні хворих...
65422. МАТЕМАТИЧНІ МОДЕЛІ ТА МЕТОДИ ПІДТРИМКИ ПРИЙНЯТТЯ РІШЕНЬ ДЛЯ УБЕЗПЕЧЕННЯ ЕКСПЛУАТАЦІЇ ПАРОГЕНЕРАТОРІВ АЕС 711 KB
  Контроль з використанням методів вихрострумового контролю ВСК одного з методів неруйнівного контролю НК пневмогідравлічного акваріумного та люмінесцентно-гідравлічного методів а також підтримання у робочому стані ТОТ та своєчасне виведення...
65423. Обґрунтування технологічних параметрів відпрацювання виїмкових стовпів на основі просторової моделі стійкості шаруватого вуглевмісного масиву 3.59 MB
  Ці методики повинні ґрунтуватися на побудові чітких розрахункових схем і фундаментальних знаннях про геомеханічні процеси що відбуваються в масиві гірських порід. Таким чином обґрунтування технологічних параметрів відпрацювання виїмкових стовпів на основі...