Вещественная функция может быть представлена рядом Тейлора, радиус сходимости которого определяется положением особых точек функции. Любой конечный отрезок ряда Тейлора является полиномом, поэтому может быть вычислен с использованием операций сложения и умножения.
Программа вычисляет функцию ln(1-x)
. Помогите пожалуйста переделать вычисления в коде для функции exp(x^2)
.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// this function is calculating the power of x
double powX(double x, int i)
{
switch (i)
{
case 0:
return 1;
case 1:
return x;
default:
return x * powX(x, i - 1);
}
}
// this function is calculating the value of a member of the serie
double membValCalc(double x, int i)
{
return -1 * (powX(x, i) / i);
}
int main()
{
/* acc = accuracy; result = aproximated value; et_result = contain library value;
aprDiff = is the difference between library's value and the result of this program's work */
double x, acc, result, membVal, et_result, aprDiff, achievedAcc;
int i, j = 0,
n; // n - is the maximal member of serie in the calculation
printf("This program will calculate function ln(1-x).\n");
printf("Please, enter x value between -1.0 and 1.0 as 'double' type: ");
scanf("%lf", &x);
// Area of definition of this function; if x not belong to this area, the program will be closed
if ((x < -0.9999999) || (x > 0.9999999))
{
printf("Error: x must be the value between -1 and 1.\n");
return -1;
}
printf("Please, enter n value as 'integer' type: ");
scanf("%d", &n);
printf("Enter accuracy of calculation as 'double' type: ");
scanf("%lf", &acc);
if (acc < 0)
{
printf("Error: accuracy is negative number.");
return -1;
}
result = 0.0;
// This for loop is calculating each member of the serie and increase the result variable by this value
for (i = 1; i <= n; i++)
{
membVal = membValCalc(x, i);
j = i;
if ((membVal > 0) && (membVal <= acc))
{
j = i - 1;
break;
}
else if ((membVal < 0) && ((membVal * -1) <= acc))
{
j = i - 1;
break;
}
else
{
result += membVal;
}
}
et_result = log(1 - x);
if ((result >= 0) && (et_result >= 0))
{
aprDiff = result - et_result;
}
else if ((result < 0) && (et_result < 0))
{
aprDiff = (result * -1) - (et_result * -1);
}
else
{
aprDiff = result + et_result;
}
achievedAcc = membValCalc(x, j);
if (aprDiff < 0)
{
aprDiff *= -1;
}
if (achievedAcc < 0)
{
achievedAcc *= -1;
}
printf("Total quantity of calculated members of the serie: %d\n", j);
printf("The achieved accuracy of calculation is %f\n", achievedAcc);
printf("The result log(1-x) is: %lf\n", result);
printf("Using the Math.h library we could get the result log = %lf\n",
et_result);
printf("The difference between calculated approximation and library's value: %lf",
aprDiff);
return 0;
}
Вобщем, вставьте, где там вам нужно - вот функция, которая считает exp(x^2)
с точностью eps
разложением в ряд Тейлора:
double expx2(double x, double eps)
{
double sum = 1.0, term = 1.0;
x = x*x;
for(int n = 1; term > eps; ++n)
{
sum += term *= x/n;
}
return sum;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ЗдравствуйтеЗадача: создать класс символьной строки и несколько объектов разработанного класса (a,b,c)
Запускаю приложение JOGL в NetBeans 81, в методе main одна строчка:
Все никак не могу понять логику того, как JoinColumn определяет какую колонку с какой надо связать