Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора - C (СИ) (73328)
Формулировка задачи:
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от значения х_нач до х_кон с шагом dx с точностью Эбсилан. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
Формула здесь:
[404]
Программа на Паскале:
CONST
Eps=0.0001;
VAR
Xbeg,Xfin,DX,SUM,X:REAL;
N:WORD;
Nx,i:INTEGER;
PROCEDURE SUMS(Xs:REAL; Var S:REAL; Var Ns:WORD);
VAR
a:REAL;
Begin
a:=1;
S:=1;
Ns:=0;
Repeat
Inc(Ns);
a:=-a*SQR(Xs)/Ns;
S:=S+a;
Until Abs(a)<Eps;
End;
BEGIN
Write('Xbeg= ');
ReadLn(Xbeg);
Write('Xfin= ');
ReadLn(Xfin);
Write('DX= ');
ReadLn(DX);
WriteLn;
WriteLn(' Results of calculation:');
WriteLn(' X SUM N Exp(-Sqr(X))');
WriteLn;
Nx:=ROUND((Xfin-Xbeg)/DX);
X:=Xbeg;
For i:=0 to Nx do
begin
X:=DX*i;
SUMS(X,SUM,N);
WriteLn(X:8:5,' ',SUM:7:5,' ',N:3,' ',Exp(-SQR(X)):7:5);
end;
ReadLn;
END.Решение задачи: «Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора»
textual
Листинг программы
#include <math.h>
#include <stdio.h>
#include <conio.h>
#define EPS 0.0001
float Xbeg, Xfin, DX, SUM, X;
unsigned int N;
int Nx, i;
void SUMS(float Xs, float *S, unsigned int *Ns)
{
float a;
a = 1;
*S = 1;
*Ns = 0;
do {
(*Ns)++;
a = -a * sqrt(Xs) / *Ns;
*S = *S + a;
} while (fabs(a) >= EPS);
}
void main(int argc, char *argv[])
{
printf("Xbeg= ");
scanf("%f",&Xbeg);
printf("Xfin= ");
scanf("%f",&Xfin);
printf("DX= ");
scanf("%f",&DX);
printf("\n");
printf(" Results of calculation:\n");
printf(" X SUM N Exp(-Sqr(X))\n");
printf("\n");
// Nx = round((Xfin - Xbeg) / DX);
Nx = (Xfin - Xbeg) / DX;
X = Xbeg;
for (i = 0; i <= Nx; i++)
{
X = DX * i;
SUMS(X,&SUM,&N);
printf("%8.5f %7.5f %3d %7.5f\n",X,SUM,N,exp(-sqrt(X)));
}
getch();
}