Szereg wygląda tak:
\(\displaystyle{ \left( 1-x\right)^\frac{-1}{4} = 1+\frac{1}{4}x+\frac{1 \cdot 5}{4 \cdot 8}x^2+\frac{1 \cdot 5 \cdot 9}{4 \cdot 8 \cdot 12}x^3+\frac{1 \cdot 5 \cdot 9 \cdot 13}{4 \cdot 8 \cdot 12 \cdot 16}x^4+\ldots}\)
dla
\(\displaystyle{ \left| x\right|}\) mniejszej niż
\(\displaystyle{ 1}\)
a) Obliczenie wartości szeregu musi być zapisane w postaci funkcji.
b) Sumowanie należy zakończyć, jeżeli moduł dodawanego wyrazu będzie mniejszy od zadanej dokładności
\(\displaystyle{ \alpha \approx 10^{-6}}\).
c) Z funkcji oprócz wartości sumy należy wyprowadzić liczbę dodawanych wyrazów szeregu.
d) W programie należy drukować wartość argumentu x z dokładnością 2 miejsc po kropce dziesiętnej oraz wartość funkcji obliczonej z przepisu funkcji i wartość funkcji obliczoną z szeregu z dokładnością 6 miejsc po kropce dziesiętnej.
e) Wydruki mają mieć wygląd tabeli z odpowiednimi kolumnami.
f) Wydruki należy wyprowadzić na ekran i do zbioru.
g) W programie należy umieścić autora projektu.
A oto program:
Kod: Zaznacz cały
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void main ()
{
double a,b,dx,x,y,z,eps;
int n;
FILE *fw;
double szer();
printf("Podaj dane:
");
printf("a=
");
scanf("%lf",&a);
printf("b=
");
scanf("%lf",&b);
printf("n=
");
scanf("%d",&n);
printf("eps=");
scanf("%lf",&eps);
if(!(fw=fopen("wyniki","w")))
{
printf("Blad otwarcia zbioru
");
exit(2);
}
fprintf(fw,"Podales: a=%10.2lf b=%10.2lf n=%d eps=%10.8lf
", a,b,n,eps);
dx=(b-a)/n;
for(x=a;x<b+dx/2;x+=dx)
{
y=szer(x,eps);
z=pow((1-x),(-1./4));
fprintf(fw,"%10.2lf %10.6lf %10.6lf
",x,y,z);
printf("%10.2lf %10.6lf %10.6lf
",x,y,z);
}
fprintf(fw,"Autor projektu:
");
printf("Autor projektu:
");
fclose(fw);
}
double szer(double x,double eps)
{
double s,w;
int l,m;
s=1+1*x/4;
w=1*x/4;
l=5;
m=8;
while(fabs(w)>eps)
{
w*=l*x/m;
s+=w;
l+=4;
m+=2;
}
double szer(double x,double eps, int *licz)
{
double s,w;
int l,m,k;
k=2;
while(fabs(w)>eps)
{
w*=l*x/m;
s+=w;
l+=4;
m+=2;
k++;
*licz=;
}
return s;
}
}