Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "code.h"
- // исходная функция
- double f(double x) {
- return pow(x, 2) * cos(x) + pow(x, 3) * exp(-x);
- }
- // сохраняем точки исходной функции
- void generate(double a, double b, double h, const char* filename) {
- FILE* data = fopen(filename, "w");
- for (double x = a; x <= b; x += h) {
- fprintf(data, "%f;%f\n", x, f(x));
- }
- fclose(data);
- }
- Polynom* polynom(int n) {
- Polynom* p = (Polynom*)malloc(sizeof(struct Polynom));
- p->n = n;
- p->k = (double*)malloc((n+1)*sizeof(double));
- for (int i = 0; i <= n; ++i) {
- p->k[i] = 0;
- }
- return p;
- }
- void free_polynom(Polynom* p) {
- free(p->k);
- free(p);
- }
- // копируем source в dest
- void copy(Polynom* dest, Polynom* source) {
- if (dest->n != source->n) {
- return;
- }
- for (int i = 0; i <= dest->n; ++i) {
- dest->k[i] = source->k[i];
- }
- }
- // вывод полинома
- void print(Polynom* p) {
- for (int i = 0; i <= p->n; ++i) {
- printf("%f * x^%d\n", p->k[i], i);
- }
- }
- // значение полинома p в точке x
- double apply(Polynom* p, double x) {
- double result = p->k[p->n];
- for (int i = p->n - 1; i >= 0; --i) {
- result = result * x + p->k[i];
- }
- return result;
- }
- // интерполяция полиномом n-ой степени
- // набора из k точек points
- Polynom* solve(Point* points, int k, int n) {
- return polynom(n);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement