Смекни!
smekni.com

Дослідження методів інтерполяції (стр. 3 из 3)

В першій главі було розглянуто варіантний аналіз чисельних методів моделювання зміни температури термопари.

В другій главі розглянуто вибір методі та інструментальних засобів рішення даної задачі.

В третій главі розглянуто алгоритм рішення задачі.

В четвертій главі було зроблено планування вхідних та вихідних даних, описано алгоритм рішення керуючої програми, та її структури.

В пятій главі було представлено розвязання даної задачі в Machcad.

В шостій було представлено інструкція користувачеві, для коректної роботи програми.

Написана програма широко використовується в обчислювальній математиці. Під час виконання роботи були закріплені знання та навички використання мови C++.


Література

1. Заварыкин В. М. и др. Численные методы: Учеб. пособие для студентов физ.-мат. спец пед. ин-тов/В. М. Заварыкин, В. Г. Житомирский, М. П. Лапчик.-М.: Просвещение, 1990.-176 с.

2. Квєтний Р.Н. Методи комп`ютерних обчислень ./ Вінниця: ВДТУ,2001 – 148с.

3. Маликов В. Т., Кветный Р. Н. Вычислительные методы и применение ЭВМ. – К.: Вища школа, 1989.

4. Кветный Р. Н. Математическое моделирование в задачах проектирования средств автоматики и информационно-измерительной техники. – К.:УМК ВО,1989. – 256 с.

5. Дубовой В.М., Квєтний Р.Н. Програмування комп’ютеризованих систем управління та автоматики. – Вінниця: ВДТУ, 1997. – 208 с.

6. Р.Н.Кветний Методи комп’ютерних обчислень. Навчальний посібник.- Вінниця: ВДТУ, 2001.-148с.


ДОДАТОК

Додаток А

#include<stdio.h>

#include<conio.h>

#include<math.h>

#include<process.h>

#define KOL 6

int kStr=3*(KOL-1);

int kStl=kStr+1;

int xi[KOL]={20,40,60,80,100,120};

double yi[KOL]={-0.67,-0.25,-0.17,0.61,1.06,1.52};

double mas[(KOL-1)*3][(KOL-1)*3+1]={{0}};

double Spline(float x);

void Gauss();

main()

{

clrscr();

printf("Spline:&bsol;n");

printf("T=75,U=%lf&bsol;n",Spline(75));

printf("T=93,U=%lf&bsol;n",Spline(93));

getch();

}

double Spline(float x)

{

double y=0;

int i,h;

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

{

h=xi[i+1]-xi[i];

mas[i][i*3]=h;

mas[i][i*3+1]=pow(h,2);

mas[i][i*3+2]=pow(h,3);

mas[i][(KOL-1)*3]=yi[i+1]-yi[i];

}

for(i=0;i<KOL-2;i++)

{

h=xi[i+1]-xi[i];

mas[i+KOL-1][i*3]=-1;

mas[i+KOL-1][i*3+1]=-2*h;

mas[i+KOL-1][i*3+2]=-3*pow(h,2);

mas[i+KOL-1][i*3+3]=1;

mas[i+2*(KOL-1)-1][i*3+1]=-1;

mas[i+2*(KOL-1)-1][i*3+2]=-3*h;

mas[i+2*(KOL-1)-1][i*3+4]=1;

}

mas[3*(KOL-1)-2][2]=1;

mas[3*(KOL-1)-1][3*(KOL-1)-2]=1;

mas[3*(KOL-1)-1][3*(KOL-1)-1]=3*(xi[KOL-1]-xi[KOL-2]);

Gauss();

int nom;

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

if(x>=xi[i]&&x<=xi[i+1])

{

nom=i;

break;

}

y=yi[nom]+mas[3*nom][kStl-1]*(x-xi[nom])+mas[3*nom+1][kStl-1]*pow(x-xi[nom],2)+mas[3*nom+2][kStl-1]*pow(x-xi[nom],3);

return y;

}

void Gauss()

{

for(int nUr=0;nUr<kStr;nUr++)

{

if(mas[nUr][nUr]==0)

{

for(int nUr1=nUr+1;nUr1<kStr;nUr1++)

{

if(mas[nUr1][nUr]!=0)

{

for(int nPer=0;nPer<kStl;nPer++)

{

double t;

t=mas[nUr][nPer];

mas[nUr][nPer]=mas[nUr1][nPer];

mas[nUr1][nPer]=t;

}

goto m1;

}

}

m1:

}

double VE=mas[nUr][nUr];

for(int nPer=0;nPer<kStl;nPer++)

mas[nUr][nPer]/=VE;

for(int nUr1=nUr+1;nUr1<kStr;nUr1++)

{

double PE=mas[nUr1][nUr];

for(int nPer=0;nPer<kStl;nPer++)

mas[nUr1][nPer]-=mas[nUr][nPer]*PE;

}

}

for(int nPer=kStl-2;nPer>=0;nPer--)

for(nUr=nPer-1;nUr>=0;nUr--)

{

mas[nUr][kStl-1]-=mas[nUr][nPer]*mas[nPer][kStl-1];

mas[nUr][nPer]=0;

}

}