Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Torotorkina
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 29
#1

Вычисление функции разложением в ряд Тейлора - C++

15.05.2016, 01:02. Просмотров 934. Ответов 20

Помогите записать рекурсивную функцию для квадрата синуса представленого рядом Тейлора.
Задается начальное значение, конечное, шаг и точность.
Вот я пыталась сделать, но сама рекурсия, к сожелению не правильно записана (
Помогите пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
double sin_function(double res, double x, double sum, double e, double n)
{
    double pi=3.14159265359/2;
    res=((pow(-1,n)*pow((x-pi/2),2*n))/factorial(n))*res;
    if(fabs(res)>=e)
        sum+=sin_function (res,x,res,e,n+1);
    return sum;
}
 
double factorial(int n)
{
    double rez;
    for (int i=0; i<n; i++)
        rez*=(2*i);
    return rez;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2016, 01:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление функции разложением в ряд Тейлора (C++):

Вычисление функции разложением в ряд Тейлора - C++
Заданы x(abs(x)&lt;1) и точность вычислений eps. Вычислить сумму: s=x-x^2/2+X^2/3-...+(-1)^(n-1) *x^n/n+... Проверка y=ln(1+x).

Вычисление функции разложением в ряд Тейлора - C++
Скласти програму для наближеного обчислення значення функції в точці х за допомогою розкладу в ряд Тейлора. Знайти наближене значення...

Вычисление функции с разложением в ряд Тейлора - C++
Вычислить и вывести на экран в виде таблицы, значения функции, заданной с помощью ряда Тейлора, на интервале от Xнач до Xкон с шагом dx с...

Вычисление функции разложением в ряд Тейлора - C++
Прошу помощи

Вычисление функции разложением в ряд Тейлора - C++
написал программу для этой формулы. Скажите правильно ли я написал ее. Если нет, то можете написать правильную :) #include...

Вычисление функции разложением в ряд Тейлора - C++
помогите записать? S(x) = \sum_{k=0}^{n}(-1)^k(x^2^k^+^1)/(2k+1)!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Torotorkina
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 29
16.05.2016, 01:06  [ТС] #16
Спасибо большое )
Я тоже сделала, правда немного по другому, вот код, может кому то пригодиться)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <iostream>
 
using namespace std;
void concole();
void file();
void output(double start, double end, double delta, double e);
double sin_function(double x, double e, int n);
 
void main()
{
    int a;
    do
    {
        cout<<"For using concole press 1, for using file -2 \n";
        cin>>a;
    }
    while ((a!=1) && (a!=2));
    if (a==1)
        concole();
    else
        file();
    _getch();
}
 
void concole()
{
    double start, end, delta,e;
    cout<<"x start= ";
    cin>>start;
    while ((start>0) && (start<1))
    {
        cout<<"Enter x start again, x start= ";
        cin>>start;
    }
    cout<<"x end= ";
    cin>>end;
    while ((end>0) && (end<1))
    {
        cout<<"Enter x end again, x end= ";
        cin>>end;
    }
    cout<<"x delta= ";
    cin>>delta;
    while (fabs(end-start)<=delta)
    {
        cout<<"Enter x start again, x delta= ";
        cin>>delta;
    }
    cout<<"e= ";
    cin>>e;
    while (e>=delta )
    {
        cout<<"Enter e again, e= ";
        cin>>e;
    }
    output(start,end,delta,e);
}
 
void file()
{
    double start, end, delta,e;
    FILE *f;
    fopen_s(&f, "C:\\Users\\Admin\\Desktop\\Марина\\С++\\RGR.txt","r");
    if (f!=NULL)
    {
        fscanf_s(f,"%if %if %if %if", &start, &end, &delta, &e);
        cout<<"x start= "<<start<<endl;
        cout<<"x end= "<<end<<endl;
        cout<<"x delta= "<<delta<<endl;
        cout<<"e= "<<e<<endl;
        output(start,end,delta,e);
    }
    else
    {
        cout<<"Incorrect file name, pleas enter a value with keyboard"<<endl;
        concole();
    }
    fclose(f);
}
 
void output(double start, double end, double delta, double e)
{
    double tab,sum;
    FILE *f;
    fopen_s(&f, "C:\\Users\\Admin\\Desktop\\Марина\\С++\\RGR.txt","w");
    for (double i=start; i<end; i+=delta)
    {
        tab=pow(sin(i),2);
        sum=i*i*sin_function(i,e,2);
        cout<<"Step\t"<<i<<"\t| table sin(x) \t"<<tab<<"\t| taylor sin(x) "<<sum<<endl;
        fprintf_s(f,"From counting %f; from table %f \n",sum, tab);
    }
    fclose(f);
}
double sin_function(double x, double e, int n)
{
    double rez = 1;
    double r=4*x*x/((2*n-1)*2*n);
    if(fabs(r)>=e)
        rez=1 - r*sin_function (x,e,n+1);
    return rez;
}
1
мановар
Kings of Metal
867 / 298 / 64
Регистрация: 12.03.2016
Сообщений: 1,122
Завершенные тесты: 1
16.05.2016, 01:28 #17
Пожалуйста, а что имеется ввиду х(нач) и х(конечн), дельта. Если не сложно вышлите числа для проверки которые использовали.
У меня надо задать только значение х, в котором нужно вычислть значение, и количество итераций (шагов по формуле, чем их больше тем точнее вычисление) не понимаю смысла х(конечн)
0
Torotorkina
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 29
16.05.2016, 01:34  [ТС] #18
Вот что у нас получиться после выполнения программы.
Мы задаем х начальное, тоесть значение с какого мы начинаем считать, х окончательное, значение при котором у нас программа завершит свое виполнение (мы еще используем х окончательное в цыклах), и х дельта, это шаг с которым мы считаем наше значение.
0
Миниатюры
Вычисление функции разложением в ряд Тейлора  
Torotorkina
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 29
16.05.2016, 01:54  [ТС] #19
мановар, теперь понятно для чего нужно х конечное ?
0
мановар
Kings of Metal
867 / 298 / 64
Регистрация: 12.03.2016
Сообщений: 1,122
Завершенные тесты: 1
16.05.2016, 01:55 #20
Теперь все понятно. У меня программа для вычисления только одного значения, у Вас для нескольких на интервале. Но у меня она не пошла комп. ругается, а судя по Вашим значениям считает правильно
0
Torotorkina
1 / 1 / 0
Регистрация: 10.04.2016
Сообщений: 29
16.05.2016, 01:58  [ТС] #21
Там может быть проблема с файлами, а так консольная функция все считает верно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2016, 01:58
Привет! Вот еще темы с ответами:

Вычисление функции разложением в ряд Тейлора - C++
Дано вещественное число X и целое число N (&gt; 0). Найти значение выражения X − X3/(3!) + X5/(5!) − … + (−1)N·X2·N+1/((2·N+1)!)...

Вычисление функции разложением в ряд Тейлора - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;locale.h&gt; float riad(float, float, float, int&amp;); int main() {int vid, n, i ; ...

Вычисление значения функции разложением в ряд Тейлора - C++
s=x-x^3/3!+x^5/5!-x^7/7!+⋯+x^25/25! Решите задачу)

Вычисление значения функции разложением в ряд Тейлора - C++
Рассчитать сумму членов бесконечного ряда с заданной пользователем точностью е для заданного пользователем значения x є (-1;1) :...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.05.2016, 01:58
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru