#include <stdio.h>
#include <math.h>
int main()
{
printf("Hello, world. Taylor series.\n");
double sm = 0.0; // значение функции
double x = 0.6; // заданный х
double s = 1.0; // сумма ряда при n = 0
double tmp = 1.0; // текущий член ряда
double ptmp = s;
double st = 1.0; // степень x
double eps = 0.0001; // эпсилон
double a; // абсолютная погрешность
double o; // относительная погрешность
double nd = 1; // условие остановки цикла
int sn = 1; // знак члена ряда
int n; // номер члена ряда
sm = pow (1.0 + x, -3.0); // значение функции
// разложение функции в ряд Тейлора и подсчет суммы ряда Тейлора
// предполагается, что ряд сходится - может не сходиться
n = 1;
while (nd == 1) // бесконечный цикл
{
sn *= -1;
st *= x;
tmp = sn * st * (n + 1) * (n + 2) / 2.0;
s += tmp;
// ? как определяется ?
{
tmp = s;
if (ptmp < 0) ptmp = - ptmp;// модуль
if (tmp < 0) tmp = - tmp; // модуль
float rs = ptmp - tmp; // оценка точности
if (rs < 0) rs = - rs; // модуль
if ( rs < eps ) // условие окончания цикла
nd = 0; // выход из бесконечного цикла
}
ptmp = s;
n++;
printf("n %d sn %d st %f tmp %f s %f\n", n, sn, st, tmp, s);
if (n > 50) return 0; // защита от бесконечности
}
a = sm - s; // абсолютная погрешность
if (a < 0) a = -a; // модуль
double s_1 = sm - s;
double s_2 = s;
if (s_1 < 0) s_1 = - s_1; // модуль
if (s_2 < 0) s_2 = - s_2; // модуль
o = ( s_1 / s_2 ); // относительная погрешность
printf("result: pow: %f series: %f a: %f o: %f\n", sm, s, a, o);
return 0;
}
// www.wolframalpha.com/input?i=plot%281%2B+x%29%5E%28-3%29
// www.wolframalpha.com/input?i=taylor+series+%281%2Bx%29%5E%28-3%29
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main()
{
printf("Hello, world. Maximum vector value.\n");
int vec[N]; // массив
int i; // итератор
int m; // максимум
int pm; // предыдущий максимум
srand(time(0));
for(i=0;i<N;i++) vec[i]=rand()%10;
for(i=0;i<N;i++) printf("%d ", vec[i]); printf("\n");
m = vec[0];
for(i=1;i<N;i++) if (vec[i]> m) { pm = m; m = vec[i]; }
printf("pm: %d m: %d\n", pm, m);
return 0;
}