Polecenie
Wyliczyć wartość e^z, gdzie z podaje użytkownik ale nie wolno mu korzystać z wartości stałej e. W tym celu ma skorzystać ze wzoru e^z= z^k / k!. Napisz program, który sprawdzi jaki błąd bezwzględny popełniany jest przez wzór w stosunku do bezpośredniego obliczenia dla danego z, gdy uwzględni się jedynie pierwsze 2, pierwsze 5 oraz pierwsze 10 elementów szeregu.
kod na razie jest surowy a zadanie jeszcze nie jest skończone. Mam problem z dokładnością wyników. Dla małych potęg wynik końcowy się zgadza ale gdy chce spr wyższe potęgi wynik różni się nawet dwukrotnie od tego prawidłowego. Na początku myślałem, że może za mała jest precyzja double ale to nie to. Nie mam pomysłu czemu tak jest. No chyba, że ten wzór działa tylko dla małych potęg a im dalej tym staje się mniej użyteczny.
#include<iostream>
#include<cstdlib> // biblotekawktora zawiera funkcje głowne
#include <stdio.h>
#include<math.h>
using namespace std;
int main()
{
int potega;
cout << "podaj potege"<<endl;
cin >> potega;
unsigned int silnia = 1;
double wartosc_e_potega = 1;
for (int k = 1; k < 10; k++)
{
silnia *= k;
wartosc_e_potega += pow(potega, k) / silnia;
cout << "dla szeregu: " << k +1 << " " << wartosc_e_potega << endl<<endl;
}
cout << "dla pwa: " << pow(2.718281828, potega);
getchar();
cin.sync();
cin.get();
}