Cześć wszystkim, mam napisać program w C wyświetlający wartości funkcji (x+1)n w zadanym przedziale używając funkcji pow oraz rozwinięcia w szereg. Niestety mam z tym spory problem, a konkretnie 2:
1)wg. tego http://en.wikipedia.org/wiki/Binomial_theorem powinienem zaczynać mnożyć od x0. Problem w tym, że nie za bardzo wiem jak to zapisać w kodzie, obecnie przypisuje tmp=x i później potęguję tmp mnożąc przez x.
2) w treści zadania jest zaznaczone, że każdy wyraz powinienem obliczać używając poprzedniego, bez korzystania z dodatkowej funkcji silnia, również nie mam pomysłu na implementację tego w funkcji szereg.
Będę wdzięczny za każdą wskazówkę, jestem początkujący, dodatkowo na analizie matematycznej nie było jeszcze żadnej wzmianki o rozwinięciu w szereg, wiem, że to żadne usprawiedliwienie, a problem prawdopodobnie jest trywialny, totalnie się jednak zaciąłem.
#include <stdio.h>
#include <math.h>
int silnia(int x)
{
int i;
int wynik=1;
for(i=2;i<=x;i++)
wynik*=i;
return wynik;
}
double szereg(double x, double m)
{
double w,s,tmp;
int i=1;
w=1;
s=0;
tmp=x;
for(i=1;i<=m;i++)
{
w=(silnia(m)/silnia(i)*silnia(m-i))*tmp;
s+=w;
tmp*=x;
}
return s;
}
int main() {
double x,a,b,dx,m;
int lp=10;
printf("Podaj a: ");
scanf("%lf",&a);
printf("Podaj b: ");
scanf("%lf",&b);
printf("Podaj wykladnik potegi: ");
scanf("%lf",&m);
dx=(b-a)/lp;
printf(" | x | pow((1+x),m) | szereg(x) |\n");
printf(" ----------------------------------------\n");
for(x=a;x<=b;x+=dx)
{
printf(" | %10.4lf | %10.4lf | %10.4lf |\n",x,pow((1+x),m),szereg(x,m));
}
return 0;
}