Курсовая работа: Численные методы при решении задач

printf ("\n%10.4lg%8.4lg%8.4lg", *(xmp[i]), *(xmp[i] + 1), ym[i]);

printf ("\nНачинаем аппроксимацию...\n");

// Требуется посчитать am. Так:

// am - это матрица-столбец искомых коэффициентов. Представляет из себя

// am = (a1, a2, ..., aK)T высотой n, а считается так:

// am = Inverse[Transpose[F].F].Transpose[F].ym, где

// F - мартица, составленная специальным образом (смотри ниже):

// Выделяем памяти сразу на все матрицы - F, TF, REV, TMP, AC2

#define memneed (((n * yr) + (yr * n) + (n * n) + (n * n) + ((n-1) * (n-1))) * eof (double))

if ((F = malloc (memneed)) == 0)

{

printf ("\nОшибка распределения памяти. Замените компьютер");

abort(); // Если не удалось выделить для неё память

}

TF = F + (n * yr);

REV = TF + (yr * n);

TMP = REV + (n * n);

AC2 = TMP + (n * n);

// Заполнение значениями матрицы F

for (j = 0; j < yr; j++) // Цикл по строкам F

{

for (i = 0; i < n; i++) // И по столбцам F

{

// Заполняем j-й строка значениями функций fi

*(F + (j * n + i)) = f (xmp[j], (i + 1));

}

}

// Матрица F готова. Надо вычислить по формуле:

// am = Inverse[Transpose[F].F].Transpose[F].ym значение

К-во Просмотров: 541
Бесплатно скачать Курсовая работа: Численные методы при решении задач