Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора - 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();
}

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы