Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
1

Переделать код в рядах Тейлора

11.06.2013, 22:39. Показов 2735. Ответов 56
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть код для этого задания:
Провести программную реализацию расчета приблизительного значения функции y, разложив функцию f (x) в ряд Тейлора, при этом необходимо вывести и применить рекуррентное отношение для расчета общей части для каждого слагаемого ряда или его части. Аргумент функции должен изменяться в диапазоне [Xbegin, Xend] с шагом Xdelta. Параметры Xbegin, Xend, Xdelta и точность (допустимая погрешность) расчетов е, определяющая условие завершения рекурсивного расчета задаются пользователем с клавиатуры. Предусмотреть ситуации, когда значение функции могу быть не определено для заданных аргументов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>  
#include <conio.h> 
#include <math.h>
 
using namespace std;
 
double factorial (double p)
{
int n=1;
p=2*n+1;
if (p == 0) 
return 1; 
else 
return p*factorial(p - 1);
}
long double sin_kub(double p, double x, double e, long double y)
{
double fact=factorial(p);
y=((pow(3, p)-3)*pow(x, p)*pow(-1, p-1)/fact);
if (y>e)
return y=(y+sin_kub(p+1, x, e, y))*0.25;
else return y*0.25;
}
void main()
{
setlocale (0,"Russian");
double xbegin, xdelta, xend, e, x;
cout<<"Введите xbegin (начальное значение): ";
cin>>xbegin;
cout<<"Введите xend(конечное значение х): ";
cin>>xend;
while (xend<xbegin)
{
cout<<"Не корректно задано."<<endl;
cout<<"Введите xbegin (начальное значение): ";
cin>>xbegin;
cout<<"Введите xend(конечное значение х): ";
cin>>xend;
}
cout<<"Введите xdelta(шаг): ";
cin>>xdelta;
cout<<"Введите e(точность): ";
cin>>e;
while (e<0.01)
{
cout<<"Ваше \"е\" слишком маленькое. Введите другое: ";
cin>>e;
}
for (double x=xbegin; x<=xend; x+=xdelta)
{
long double f=sin_kub(3, x, e,0);
cout<<"x="<<x<<"      "<<"f(x)="<<f<<endl;
}
 
getch ();
}
но мне оченьочень нужно , чтобы считало эту формулу(второй снимок).
на днях сдавать, а сделать еще кучу работы нужно, помогите, пожалуйста.
Миниатюры
Переделать код в рядах Тейлора   Переделать код в рядах Тейлора  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2013, 22:39
Ответы с готовыми решениями:

Ошибка в рядах Тейлора
Помогите найти ошибку в этом задании: адача состоит в проведении программной реализации расчета...

Переделать ряд Тейлора
Вычислить и вывести на экран в виде таблицы значение функции, заданной с помощью ряда Тейлора на...

Код написан в Dev C. Не работает в Visual. Как нужно переделать код?
Здравствуйте. Столкнулась с такой проблемой: код был написан в Dev C, но в Visual он выдаёт...

Разложение ряд в ряд Тейлора.Переделать программу
Написать программу вычисления и вывода на экран в виде таблицы значений функции, заданной с помощью...

56
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.06.2013, 23:53 2
Вот код разложения синуса в ряд тейлора с заданной точностью:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
double calcSin(const double x, const double eps)
{
    double n = x;
    double sum = 0.0;
    int i = 1;
 
    do
    {
        sum += n; /* äîáàâëÿåì ê ñóììå î÷åðåäíîé ýëåìåíò ðÿäà */
        /* âû÷èñëÿåì íîâîå çíà÷åíèå ýëåìåíòà ðÿäà */
        n *= -1.0 * (x * x) / ((2 * i + 1) * (2 * i));
        i++; /* óâåëè÷èâàåì íîìåð ýëåìåíòà */
    }
    while (fabs(n) >= eps);
    
    return sum;
}
 
int main(void)
{
    double eps = 0.00001, x;
    printf("Enter x: "); /* âûâîäèì èíôîðìàöèîííîå ñîîáùåíèå */
    scanf("%lf", &x);     /* ñ÷èòûâàåì ñ êëàâèàòóðû */
    printf("eps = %f\n", eps);
    printf("sin(%.1f) = %f == %f\n", x, sin(x), calcSin(x, eps));
        
    _getch(); /* ïàóçà */
    return 0;
}
Вот пример печати таблицы значений функции в заданном диапазоне с заданным шагом:
Вычислить множество значений функции y пока большего дать не могу, занят. Надеюсь, поможет.
1
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
12.06.2013, 00:02  [ТС] 3
Цитата Сообщение от MrGluck Посмотреть сообщение
Вот код разложения синуса в ряд тейлора с заданной точностью:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
double calcSin(const double x, const double eps)
{
    double n = x;
    double sum = 0.0;
    int i = 1;
 
    do
    {
        sum += n; /* äîáàâëÿåì ê ñóììå î÷åðåäíîé ýëåìåíò ðÿäà */
        /* âû÷èñëÿåì íîâîå çíà÷åíèå ýëåìåíòà ðÿäà */
        n *= -1.0 * (x * x) / ((2 * i + 1) * (2 * i));
        i++; /* óâåëè÷èâàåì íîìåð ýëåìåíòà */
    }
    while (fabs(n) >= eps);
    
    return sum;
}
 
int main(void)
{
    double eps = 0.00001, x;
    printf("Enter x: "); /* âûâîäèì èíôîðìàöèîííîå ñîîáùåíèå */
    scanf("%lf", &x);     /* ñ÷èòûâàåì ñ êëàâèàòóðû */
    printf("eps = %f\n", eps);
    printf("sin(%.1f) = %f == %f\n", x, sin(x), calcSin(x, eps));
        
    _getch(); /* ïàóçà */
    return 0;
}
Вот пример печати таблицы значений функции в заданном диапазоне с заданным шагом:
Вычислить множество значений функции y пока большего дать не могу, занят. Надеюсь, поможет.
спасибо за отклик. чтобы оно считало ln, нужно кардинально что-то менять?
0
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 32
12.06.2013, 00:12 4
MrGluck, помоги мне тоже с заданием.
Оно такое же только по другой формуле.
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
12.06.2013, 00:20 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
double calсLn(const double x, const double eps)
{
    double n = 1;
    double sum = 0.0;
    int i = 1;
 
    do
    {
        sum += n/i; /* добавляем к сумме очередной элемент ряда */
        /* вычисляем новое значение элемента ряда */
        n *= pow(-1,i++)*(x-1);
        i++; /* увеличиваем номер элемента */
    }
    while (fabs(n) >= eps);
    
    return sum;
}
 
int main(void)
{
    double eps = 0.00001, x;
    printf("Enter x: "); /* выводим информационное сообщение */
    scanf("%lf", &x);     /* считываем с клавиатуры */
    printf("eps = %f\n", eps);
    printf("ln(%.1f) = %f == %f\n", x, log(x), calcSin(x, eps));
        
    _getch(); /* пауза */
    return 0;
}
Добавлено через 2 минуты
Ой, тут еще отрезок, еще и шаг, еще и рекурсия, попозже тогда, щя работаю.
1
MrGluck
12.06.2013, 00:39
  #6

Не по теме:

освобожусь, сделаю. подписался на тему

1
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
12.06.2013, 01:16 7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, int n)
{
return ((pow(-1,n++)*pow ((x-1), n) /n);
}
 
double fun (double e, double x, int n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return 0;
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x>0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.06.2013, 04:15 8
Цитата Сообщение от Wolkodav Посмотреть сообщение
for(double x=xstart;x <= xend; x+=xdelta)
{
if (x>0)
continue;
наверное можно и break; да и вообще описать в условии

С кубическим синусом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
#include <iomanip>
#include <cmath>
 
// формула вычисления факториала
unsigned long long fact(const int n)
{
    return n == 1 ? 1 : n * fact(n-1);
}
 
// sum - результат
// n - текущий номер последовательности
// x - собственно аргумент функции sin^3(x)
// eps - точность
double f(double sum, const int n, const double x, const double eps)
{
    double var = pow(3, 2*n+1) - 3; // 3^(2n+1) - 3) *
    if (n % 2 == 0)                 // (-1)^(n+1)    *
        var *= -1;
    var *= pow(x, (2*n+1));         // x^(2n+1)      /
    var /= (4*fact(2*n+1));         // 4*(2n+1)!
    sum += var; // добавляем к сумме ряда очередной элемент
    if (fabs(var) >= eps)
        return f(sum, n+1, x, eps);
    else
        return sum;
}
 
int main()
{
    double step, min, max, eps;
    std::cout << "Enter Xbegin: ";
    std::cin >> min;
    do
    {
        std::cout << "Enter Xend: ";
        std::cin >> max;
    } while (max < min);
    do
    {
        std::cout << "Enter Xdelta: ";
        std::cin >> step;
    } while (step <= 0);
    do
    {
        std::cout << "Enter eps: ";
        std::cin >> eps;
    } while (eps < 0 || eps > 1);
 
    for (double x = min; x <= max; x += step)
    {
        std::cout << "sin^3(" << std::fixed
            << std::setprecision(log10(1/step)) << x << ") = "
            << std::setprecision(log10(1/eps) + 1) << pow(sin(x), 3) << " == "
            << f(0, 1, x, eps) << std::endl;
    }
}
эх, сделал сначала через вычисление следующего члена через предыдущий, а потом потер

Добавлено через 27 минут
С логарифмом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <iomanip>
#include <cmath>
 
// sum - результат
// nom - числитель последнего члена последовательности
// n - текущий номер последовательности
// x - собственно аргумент функции sin^3(x)
// eps - точность
double calc(double sum, double nom, const int n, const double x, const double eps)
{
    nom *= (1-x);
    sum += nom / n;
    if (fabs(nom/n) >= eps)
        return calc(sum, nom, n+1, x, eps);
    else
        return sum;
}
 
// функция для принятия аргументов и передачи их рекурсивной функции с заданными
// числовыми значениями для начальных вспомогательных параметров
double f(const double x, const double eps)
{
    return calc(0, -1, 1, x, eps);
}
 
int main()
{
    double step, min, max, eps;
    std::cout << "Enter Xbegin: ";
    std::cin >> min;
    do
    {
        std::cout << "Enter Xend: ";
        std::cin >> max;
    } while (max < min);
    do
    {
        std::cout << "Enter Xdelta: ";
        std::cin >> step;
    } while (step <= 0);
    do
    {
        std::cout << "Enter eps: ";
        std::cin >> eps;
    } while (eps < 0 || eps > 1);
 
    for (double x = min; x <= max; x += step)
    {
        std::cout << "ln(" << std::fixed
            << std::setprecision(log10(1/step)) << x << ") = "
            << std::setprecision(log10(1/eps) + 1) << log(x) << " == "
            << f(x, eps) << std::endl;
    }
}
1
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
12.06.2013, 13:48  [ТС] 9
Цитата Сообщение от Wolkodav Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, int n)
{
return ((pow(-1,n++)*pow ((x-1), n) /n);
}
 
double fun (double e, double x, int n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return 0;
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x>0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
к сожалению, выдает такие ошибки:
2 IntelliSense: существует более одного экземпляра перегруженная функция "pow", соответствующего списку аргументов: 11
Ошибка 1 error C2668: pow: неоднозначный вызов перегруженной функции 11
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
12.06.2013, 13:52 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, double n)
{
return ((pow(-1.0,n++)*pow ((x-1.0), n) /n);
}
 
double fun (double e, double x, double n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return 0;
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x>0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1.0) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
2
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
12.06.2013, 14:05  [ТС] 11
Цитата Сообщение от Wolkodav Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, double n)
{
return ((pow(-1.0,n++)*pow ((x-1.0), n) /n);
}
 
double fun (double e, double x, double n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return 0;
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x>0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1.0) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
сейчас работает, но результата не могу добиться. не могли бы Вы свой скриншот сделать, пожалуйста?
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
12.06.2013, 14:07 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, double n)
{
return ((pow(-1.0,n++)*pow ((x-1.0), n) /n);
}
 
double fun (double e, double x, double n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return 0;
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x<=0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1.0) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
Добавлено через 51 секунду
Пишу прямо тут. На глаз проверяю.
0
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
12.06.2013, 14:13  [ТС] 13
Цитата Сообщение от Wolkodav Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, double n)
{
return ((pow(-1.0,n++)*pow ((x-1.0), n) /n);
}
 
double fun (double e, double x, double n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return 0;
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x<=0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1.0) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
Добавлено через 51 секунду
Пишу прямо тут. На глаз проверяю.
вот такой результат выходит
Миниатюры
Переделать код в рядах Тейлора  
0
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
12.06.2013, 14:17  [ТС] 14
Цитата Сообщение от Wolkodav Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, double n)
{
return ((pow(-1.0,n++)*pow ((x-1.0), n) /n);
}
 
double fun (double e, double x, double n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return 0;
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x<=0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1.0) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
Добавлено через 51 секунду
Пишу прямо тут. На глаз проверяю.
а вот такой результат выдает программа товарища MrGluck
Миниатюры
Переделать код в рядах Тейлора  
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
12.06.2013, 14:29 15
MikeEl, так возьмите программу господина MrGluck.
0
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
12.06.2013, 14:37  [ТС] 16
Цитата Сообщение от Wolkodav Посмотреть сообщение
MikeEl, так возьмите программу господина MrGluck.
просто уже ради интереса хотелось разобраться, почему в Вашей не все работает.
спасибо за потраченные усилия)
0
840 / 478 / 58
Регистрация: 18.09.2012
Сообщений: 1,688
12.06.2013, 14:47 17
Да там пару мест надо исправить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <math.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
  
double f (double x, double n)
{
return ((pow(-1.0,n++)*pow ((x-1.0), n) /n);
}
 
double fun (double e, double x, double n)
{
if (fabs((f(x,n)) - (f(x,n+1))) < e)
return f(x,n);
else
return f(x,n) + fun (e, x, n+1);
}
 
int main()
{
setlocale (0,"");
double xstart, xend, xdelta, e;
cout << "Начало (xstart):";
cin >> xstart;
cout << "Конец (xend): ";
cin >> xend;
cout << "Шаг(xdelta): ";
cin >> xdelta;
cout << "Точность(e, eps): ";
cin >> e;
if (xstart<=0)
{cout<<"Error!"<<endl;
return 0;
}
for(double x=xstart;x <= xend; x+=xdelta) 
{
if (x<=0)
continue;
else
cout << "f(" << x << ")=" << setw (9) << fun (e, x, 1.0) << " " << setw (9) << log(x) << endl;
}
_getch();
return 0;
}
1
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.06.2013, 15:14 18
MikeEl, сразу понимаю, что вы сидите на студии. Первый аргумент pow приводите к типу doube
C++
1
static_cast<double>(аргумент)
0
1 / 1 / 0
Регистрация: 27.03.2012
Сообщений: 52
12.06.2013, 15:56  [ТС] 19
Цитата Сообщение от MrGluck Посмотреть сообщение
MikeEl, сразу понимаю, что вы сидите на студии. Первый аргумент pow приводите к типу doube
C++
1
static_cast<double>(аргумент)
верно, сижу на VS 2010
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.06.2013, 16:08 20
Цитата Сообщение от MikeEl Посмотреть сообщение
товарища MrGluck
Цитата Сообщение от Wolkodav Посмотреть сообщение
господина MrGluck.
ну я прям даже не знаю
0
12.06.2013, 16:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.06.2013, 16:08
Помогаю со студенческими работами здесь

Ряд Тейлора - исправить код
Я написал программу, а она вроде дает результат но не правильный. Программа высчитывает значение...

Разложение в ряд Тейлора(код есть, но ошибочный)
Передо мной стоит такая задача: http://imagepost.ru/?v=238/uBbB7Cp.png Я написала программу....

Переделать код на код с рекурсией
Привет. Есть готовый код, нужно переделать его на код с рекурсией. Само задание для кода звучало...

Переделать код С++ в СИ
Помогите,пожалуйста, переделать код С++ в СИ #include &lt;conio.h&gt; #include &lt;iostream&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru