Tablicowanie funkcji w zadanym przedziale, z zadaną liczbą
podprzedziałów, z wykorzystaniem rozwinięcia w szereg.
Dane wejściowe do programu: przedział, w którym funkcja ma
być tablicowana, liczba podprzedziałów
Podobnie jak w programie, który robiliśmy na zajęciach, a
dostępnym jako dokument programy3 na tej stronie trzeba
napisać funkcję szereg, która na podstawie rozwinięcia w
szereg oblicza wartość funkcji dla danego argumentu.
Na ekranie mają się pojawić 3 kolumny liczb: argument (x),
wartość funkcji z biblioteki matemtycznej dla x, wartość
funkcji szereg dla x.
W funkcji szereg nie uŜywamy funkcji pow ani silnia; do
obliczenia kolejnego wyrazu szeregu wykorzystujemy wyraz
poprzedni
tak wygląda szereg
ln x = (x-1)/x + (x-1)^2/(2x^2) + (x-1)^3/(3x^3) +....
x>0.5
Co mogę zmienić żeby było dobrze? Psycha juz siada.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 100
/*
ln x = (x-1)/x + (x-1)^2/(2*x^2) + (x-1)^3/(3*x^3) +....
x>0.5
*/
double szereg(double x)
{
double s, w;
int i;
s = x;
w = x;
for (i = 1; i < n; i++)
{
w = (w * (x-1)) / (i * i * x ) ;
s = s + w;
}
return s;
}
int main()
{
int lp;
double a, b, krok, x;
do
{
printf("podaj konce przedzialow i liczbe podprzedzialow\n");
scanf("%lf %lf %d", &a, &b, &lp);
} while (a <= 0.5 || b <= 0.5);
krok = (b - a) / lp;
printf("krok=%6.2lf\n\n\n", krok);
printf(" ----------------------------\n");
printf(" x szereg(x) ln(x)\n----------------------------\n");
for (x = a; x <= b; x += krok)
printf("%10.2lf %7.4lf %7.4lf\n", x, szereg(x), log(x));
printf(" ----------------------------\n\n");
return 0;
}