Построение кубического сплайна функции
Даша Оля
Две девочки - 40000 рефератов
Ваш регион: Москва
 
Математика>>

Построение кубического сплайна функции Построение кубического сплайна функции

                ГОСУДАРСТВЕННЫЙ КОМИТЕТ РОССИЙСКОЙ ФЕДЕРАЦИИ
                 ПО ВЫСШЕМУ И СРЕДНЕСПЕЦИАЛЬНОМУ ОБРАЗОВАНИЮ
            КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ



                            Практическое задание

                           по компьютерной алгебре

                              тема: построение
                         кубического сплайна функции



                                                                   Выполнил:
                                                        студент 2 курса ФИВТ
                                                                 группы 27-4
                                                                  Попов А.В.

                                                                  Проверила:
                                                                 Быкова Е.Г.



                                   1998 г.

План:

1) вывод расчётных формул;

2) текст программы;

3) тестирование.



                              Текст программы.
#include 
#include 
#include 
#include 
#include 
#include "mat_vec.h"  // классы для работы с матрицами и векторами
#include "progonka.h" // решение системы ур-ний (для 3-х диагональных
матриц)
#include "funct.h"    // второстепеннные функции программы (рисование и
т.д.)

// "корень" программы
void spline (float step, int dop, int n, double* &x,double* &y,double*
&x1,double* &y1) {
 int k = 0;
 matrica Sp(n, n-1);
  for (int i = 1; i  1) Sp(i,i-1) = 1;
       }
  float *tmp;

 progonka(Sp, tmp); // решение системы уравнений методом прогонки
                 // (см. файл "progonka.h")

 vector a(n),b(n+1),c(n),d(n); // вычисление коэф-тов многочленов
       b(1) = 0;
       b(n+1) = 0;
  for(int index = 0; index > n;
 cout > dop;
 cout > step;
 dop++;
 double *x,*y, *x1,*y1;

 initial(x,y,x1,y1,n,dop);
 int i = 0;  while (i 

// инициализация графики
void init() {
  int D,M;  D = DETECT;  M = 5;
  initgraph(&D,&M,"");
}

// рисование графика функции и сплайна
void paint(int Fx,int Fy,int key,int n, int dop, double* &x,double*
&y,double* &x1,double* &y1) {
 int i = 0, a, b;
  a = getmaxx()/2;  b = getmaxy()/2;
   setfillstyle(0,0);  bar(0,0,a*2+1,b*2+1); setcolor(5);

if ((key == 1) || (key == 3))
  while ( i 
#include 

// класс матриц
class matrica {
  public:
      const int Column, String; //кол-во столбцов и строк матрицы
      matrica(int column, int string);
      ~matrica();
  private:
      float **WW;
      matrica(const matrica& rhs);
      matrica& operator=(const matrica& rhs);
  public:
      float& operator()(int i, int j);
      friend ostream& operator>(istream& in, const matrica& matr);
};
// конструктор
matrica :: matrica(int column, int string) : Column(column), String(string)
{
   WW = new float*[string];
   if(!WW) {
     cout  0) && (i  0) && (j >(istream& in, matrica& WW) {
      for(int i = 1; i > WW(i, j);
      return in;
}



// класс векторов
class vector  {
      public:
            vector(int column);
            ~vector();
            const int Column;  // кол-во элементов вектора
      private:
            float *vect;
            vector(const vector& rhs);
            vector& operator=(const vector& rhs);
      public:
            float& operator()(int i);
            friend ostream& operator>(istream& in, const vector& vec);
};
// кнструктор vector
vector :: vector(int column) : Column(column) {
  vect = new float[column];
   if(!vect) {
   cout  0) && (i >(istream& in, vector& vec) {
   for(int i = 1; i > vec(i);
   return in;
}
#endif

#ifndef __PROGONKA_H
#define __PROGONKA_H
#include "mat_vec.h"
int progonka(matrica &mat, float* &x) {
      x = new float[mat.String];
      if(!x)
        return 0;
 int i, y = mat.Column, n = mat.String;   vector h(n), d(n);
      d(1) = - mat(1, 2) / mat(1, 1);
      h(1) =   mat(1, y) / mat(1, 1);
 for(i = 2; i = 1; i--)
                           x[i - 1] = d(i) * x[i] + h(i);
   return 1;
}
#endif

                                Тестирование:

    Зеленым цветом – график функции [pic] построенный в пределе от   –5  до
5, с шагом = 1.
    Красным  цветом  –  график  сплайна,  полученный  при  интерполировании
исходного графика, причём дополнительно построено всего 3  точки  на  каждом
интервале.

Для добавления страницы "Построение кубического сплайна функции" в избранное нажмине Ctrl+D
 
 
2005 © Copyright, 2devochki.ru
E-mail:
Реклама на сайте
  


Посетите наши другие проекты:
Электронные книги
Электронные словари
Коды к играм и прохождение игр