Построение кубического сплайна функции
Информация - Математика и статистика
Другие материалы по предмету Математика и статистика
< Column; i++)
vect[i] = 0;
}
// деструктор
vector :: ~vector() {
delete [] vect;
}
// операция доступа к эелементу
float& vector :: operator()(int i) {
if((i > 0) && (i <= Column))
return vect[i - 1];
else {
cout << "\n !!!Ошибка доступа к элементу вектора - " << i;
exit(EXIT_FAILURE);
}
}
// вывод вектора в поток
ostream& operator << (ostream& out, vector& vec) {
for(int i = 1; i <= vec.Column; i++)
out << vec(i) << ;
return out << endl;
}
// ввод вектора из потока
istream& operator>>(istream& in, vector& vec) {
for(int i = 1; i <= vec.Column; i++)
in >> 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 <= n - 1; i++) {
d(i) = mat(i, i+1) / (mat(i, i-1) * d(i-1) - mat(i, i));
h(i) =(mat(i, y)-mat(i,i-1) * h(i-1))/(mat(i, i-1) * d(i-1) + mat(i, i));
}
h(n) =(mat(n, y)-mat(n,n-1) * h(n-1))/(mat(n, n-1) * d(n-1) + mat(n, n));
x[n-1] = h(n);for ( i=n - 1; i >= 1; i--)
x[i - 1] = d(i) * x[i] + h(i);
return 1;
}
#endif
Тестирование:
Зеленым цветом график функции построенный в пределе от 5 до 5, с шагом = 1.
Красным цветом график сплайна, полученный при интерполировании исходного графика, причём дополнительно построено всего 3 точки на каждом интервале.