/******************************************************** * Calculate a limited development of a real function * * f(x)/g(x) at x=0 up at order 25, knowing the limited * * developments of f(x) and g(x). * * ----------------------------------------------------- * * SAMPLE RUN: * * * * Limited development of a real function f(x)/g(x): * * * * Function to develop: exp(x)/1+x * * * * Limited development of f(x)=exp(x) is: * * 1 + x + x^2/2! + x^3/3! + ... + x^n/n! + ... * * * * Limited development of g(x)=1+x is: * * 1 + x * * * * Order of development (max=25): 6 * * * * Input coefficients of limited dev. of f(x): * * a0 = 1 * * a1 = 1 * * a2 = 0.5 * * a3 = 0.1666667 * * a4 = 0.0416667 * * a5 = 0.0083333 * * a6 = 0.0013889 * * * * Input coefficients of limited dev. of g(x): * * b0 = 1 * * b1 = 1 * * b2 = 0 * * b3 = 0 * * b4 = 0 * * b5 = 0 * * b6 = 0 * * * * The coefficients of limited dev. of f(x)/g(x) are: * * c0 = 1.0000000 * * c1 = 0.0000000 * * c2 = 0.5000000 * * c3 = -0.3333333 * * c4 = 0.3750000 * * c5 = -0.3666667 * * c6 = 0.3680556 * * * * Function to develop: 1/1+sh(x) * * * * Limited development of g(x)=1+sh(x) is: * * 1 + x + x^3/3! + x^5/5! + ... + x^2n+1/(2n+1)! + ... * * * * Order of development (max=25): 6 * * * * Input coefficients of limited dev. of f(x): * * a0 = 1 * * a1 = 0 * * a2 = 0 * * a3 = 0 * * a4 = 0 * * a5 = 0 * * a6 = 0 * * * * Input coefficients of limited dev. of g(x): * * b0 = 1 * * b1 = 1 * * b2 = 0 * * b3 = 0.1666667 * * b4 = 0 * * b5 = 0.0083333 * * b6 = 0 * * * * The coefficients of limited dev. of f(x)/g(x) are: * * c0 = 1.0000000 * * c1 = -1.0000000 * * c2 = 1.0000000 * * c3 = -1.1666667 * * c4 = 1.3333334 * * c5 = -1.5083334 * * c6 = 1.7111112 * * * * ----------------------------------------------------- * * Ref.: "Mathematiques en Turbo Pascal By Alain * * Reverchon and Marc Ducamp, Editions Eyrolles, * * Paris, 1991" [BIBLI 03]. * * * * C++ version by J-P Moreau. * * (www.jpmoreau.fr) * ********************************************************/ #include #include #define SIZE 25 int i,m; double T1[SIZE+1],T2[SIZE+1],R[SIZE+1]; void ar_dldiv(int n, double *t1, double *t2, double *res) { int i,j; double x; if (n > SIZE) return; if (fabs(t2[0]) < 1e-12) return; res[0]=t1[0]/t2[0]; for (i=1; i<=n; i++) { x=t1[i]; for (j=1; j<=i; j++) x -= t2[j]*res[i-j]; res[i]=x; } } void main() { printf("\n Limited development of a real function f(x)/g(x):\n\n"); printf(" Function to develop: exp(x)/1+x\n\n"); printf(" Limited development of f(x)=exp(x) is:\n"); printf(" 1 + x + x^2/2! + x^3/3! + ... + x^n/n! + ...\n\n"); printf(" Limited development of g(x)=1+x is:\n"); printf(" 1 + x\n"); printf("\n Order of development (max=25): "); scanf("%d",&m); printf("\n\n Input coefficients of limited dev. of f(x):\n"); for (i=0; i<=m; i++) { printf(" a%d = ",i); scanf("%lf",&T1[i]); } printf("\n\n Input coefficients of limited dev. of g(x):\n"); for (i=0; i<=m; i++) { printf(" b%d = ",i); scanf("%lf",&T2[i]); } printf("\n\n"); ar_dldiv(m,T1,T2,R); printf(" The coefficients of limited dev. of f(x)/g(x) are:\n"); for (i=0; i<=m; i++) printf(" c%d = %10.7f\n", i, R[i]); printf("\n\n"); } // end of file ltddev2.cpp