Помогите, пожалуйста, доделать на Си
Что нужно сделать что-бы функция вводилась, а потом аппроксимировалась?
Аппроксимация функций, заданных аналитически, многочленами Чебышева. В головной программе необходимо: 1. описать прототип функции: void approks_Chebyshev(int n, float x1, float x2, float q[n+1], float cheb[n+1], float r[n+1][n+1], float *eps); 2. ввести значение переменной n – степень аппроксимирующего полинома, 3. описать массивы: float q[n+1]; // вектор коэффициентов // аппроксимирующего полинома // по возрастающим степеням float cheb[n+1]; // массив коэффициентов // при аппроксимирующих многочленах Чебышева float r[n+1][n+1]; // массив коэффициентов // многочленов Чебышева 4. ввести значения переменных x1 и x2 – левая и правая границы аппроксимации, 5. создать функцию float function(float x) , в которой описать аппроксимируемую функцию как f=f(x), например: float function(float x) // // Описание аппроксимируемой функции в виде f=f(x) // { float f; f=log(x); return f; } 6. обратиться к программе вычислений коэффициентов аппроксимирующего полинома: approks_Chebyshev(n, x1, x2, q, cheb, r, &eps); 7. вывести на экран терминала (в текстовый файл) векторы коэффициентов q[n+1] и cheb[n+1], массив r[n+1][n+1] и абсолютную погрешность аппроксимации eps в средине интервала. Пример: аппроксимировать кубическим полиномом функцию: на интервале от x1=1,0 до x2=2,0. Головная программа: #include <stdio.h> #include <math.h> #include <conio.h> void approks_Chebyshev(int n, float x1, float x2, float q[n+1], float cheb[n+1], float r[n+1][n+1], float *eps); int main(int argc, char **argv) { int n; // степень аппроксимирующего полинома float x1, x2; // границы интервала аппроксимации float eps; // абсолютная погрешность аппроксимации // в середине заданного интервала (x1, x2) int i, j; // рабочие переменные printf("\n stepen approks. polinoma n = "); scanf("%d", &n); float q[n+1]; // массив коэффициентов // аппроксимирующего полинома // по возрастанию степеней float cheb[n+1]; // массив коэффициентов при // аппроксимирующих многочленах Чебышева float r[n+1][n+1]; // массив коэффициентов // многочленов Чебышева printf("\n levaja granica approks. x1 = "); scanf("%f", &x1); printf("\n pravaja granica approks. x2 = "); scanf("%f", &x2); approks_Chebyshev(n, x1, x2, q, cheb, r, &eps); printf("\nKoefficienty approks. polinoma:\n"); for (i=0; i<n+1; i++) printf("%12.6f", q[i]); printf("\n"); printf("\nKoefficienty chebyshev. approksim.:\n"); for (i=0; i<n+1; i++) printf("%12.6f", cheb[i]); printf("\n"); printf("\nKoefficienty mnogochlenov chebysheva:\n"); for (i=0; i<n+1; i++) { for (j=0; j<n+1; j++) printf("%10.2f", r[i][j]); printf("\n"); } printf("\n"); printf("\nAbsoljutnaja pogreshn. approksimacii: %e\n", eps); return 0; } Описание аппроксимируемой функции: float function(float x) // // Описание аппроксимируемой функции в виде f=f(x) // { float f; f=log(x); return f; } |
Часовой пояс GMT +4, время: 08:28. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.