Metody numeryczne i programowanie - nie wiem co dalej

0

Witam, mam pewien problem.
Mam takie oto polecenie:
Zaimplementować algorytm, obliczający przybliżone wartości f(x)=exp(x), X E [-30,30] poprzez sumowanie N wyrazów rozwinięcia całej funkcji w szereg Taylora. Zbadaj jak zmieniają się błędy względne przybliżenia funkcji przy wzrastającej liczbie N E [1;100]. Wyjaśnij przyczyny. Dokonaj takiej modyfikacji algorytmu i wybierz takie N, by uzyskać dokładność masywną dla X E [-30;30]

Napisałem część programu ale stoję w miejscu, nie wiem co zrobić dalej.
Proszę o pomoc.
Program poniżej:

#include <stdio.h>
#include <stdlib.h>
#include<math.h>

float silnia(float i)
{
 if(i<1){
   return 1;
 }
else{
   return i*silnia(i-1);
}

}
float potega(float a, int b)
{
   int pot=1;

   while(b>0){
       pot*=a;
       b--;
   }

   return pot;
}
 float taylor(int x, int n){
 int i;
 float suma=0;
 for(i=0;i<n;i++){
                suma=suma+(potega(x,i)/silnia(i));
   }

   return suma;
 }


int main()
{
   int n,i,j;
   float blad;
   float suma=0;
   printf("Podaj n:\n");
   scanf("%d",&n);

   for(j=-30;j<=30;j++){
            for(i=0;i<n;i++){
                suma=suma+(potega(j,i)/silnia(i));
   }
    printf("x=%d, e^x=%f\n",j,suma);
    blad=abs((potega(M_E,j)-suma))/potega(M_E,j);
    printf("blad:%f\n",blad);
    blad=0;
    suma=0;
    }

    float licznik=0;
    for(j=-30;j<=30;j++){
            for(i=0;i<n;i++){
                licznik=licznik+potega(j,i)*(silnia(n)/silnia(i));
   }
   suma=licznik/silnia(n);
   printf("x=%d, e^x=%f\n",j,suma);
   suma=0;
   licznik=0;
    }
   return 0;
}
0

Skasuj i napisz od nowa bo cały kod jest napisany źle. Między innymi dlatego że liczysz tu silnie oraz potęgę, a nie powinieneś.
Szereg który tu masz ma tą ciekawą własność że pierwszy wyraz jest trywialny a wyraz i+1 można wyliczyć bardzo łatwo na podstawie wyrazu i

1 użytkowników online, w tym zalogowanych: 0, gości: 1