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

Ряд Тейлора - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.78
Strony
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 5
25.11.2010, 03:26     Ряд Тейлора #1
Вычислить и вывести на экран в виде таблицы значение функции, заданной с помощью ряда Тейлора, на интервале от Хнач до Хкон с шагом dX с точностью E. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда. Для вычисления последующего члена ряда использовать рекуррентную формулу.
Миниатюры
Ряд Тейлора  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2010, 03:26     Ряд Тейлора
Посмотрите здесь:

Ряд Тейлора C++
ряд Тейлора C++
ln - ряд Тейлора C++
вычислить функцию с помощью разложения в ряд.(Ряд Тейлора) C++
C++ Ряд Тейлора С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Strony
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 5
25.11.2010, 03:27  [ТС]     Ряд Тейлора #2
Помогите
Задача для меня слишком сложная
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
25.11.2010, 09:44     Ряд Тейлора #3
Вот:
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
#include <iostream>
 
using namespace std;
 
double func(double x, double E)
{
    double a=1/x,num=1/x;
    int n=0;
    while (num>E)
    {
        num*=(2*n+1)/((2*n+3)*x*x);
        a+=num;
    }
    return a;
}
 
using namespace std;
 
int main(int argc, char *argv[])
{
    const double E=0.001, x1=2,x2=5,Dx=0.2;
    double x;
    cout<<"Result:"<<endl;
    for (x=x1;x<x2;x+=Dx)
        cout<<x<<"   "<<func(x,E)<<endl;
    return 0;
}
Только не знаю правильно ли.
Strony
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 5
25.11.2010, 13:28  [ТС]     Ряд Тейлора #4
Там же надо еще Хнач, Хкон, шаг dX ввод данных сделать...
нашел похожую задачу. Можно ее переделать под мою???
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
#include<stdio.h>
 
int main()
{
    //declaration of variables
 
    int i=0;//iteration counter
    int xn=0, xk=2;
    long double x;//current value of x
    long double eps;//absolute accuracy
    double dx;//step of iteration (dx_minimum=0.2)
    long double summa=0;
    long double s1=0, s2=0;//s1-preceding term of series 
                           //s2-current term of series
 
    printf("Input step of iteration dx=");
    scanf("%lf",&dx);
    printf("Input absolute accuracy eps=");
    scanf("%lf",&eps);
    printf("\n--------------------------------------------------------------------------\n");
    printf("|  current value of x  |  current value of summa  |   iteration counter  |\n");
    printf("--------------------------------------------------------------------------\n");
 
    for(x=dx;x<=xk;x+=dx)
    {
        for(i=1, s1=(x-1), summa=s1; s1 > eps || s1 < -eps ; ++i)//
        {
            if(i%2==0)
            {
                summa+=s2;
                s2=s1*(x-1)/(i+1);
                s1=s2;
                
            }
            else
            {
                summa-=s2;
                s2=s1*(x-1)/(i+1);
                s1=s2;
                
            }
        }
        printf("|       %f       |         %09f        |           %2.0d         |\n",x,summa,i);
 
    }
    printf("--------------------------------------------------------------------------\n");
 
    return 0;
}
Миниатюры
Ряд Тейлора  
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
25.11.2010, 15:29     Ряд Тейлора #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
#include <iostream>
 
using namespace std;
 
double func(double x, double E)
{
    double a=1/x,num=1/x;
    int n=0;
    while (num>E)
    {
        num*=(2*n+1)/((2*n+3)*x*x);
        a+=num;
    }
    return a;
}
 
int main(int argc, char *argv[])
{
    double E,x1,x2,Dx,x;
    cout<<"Enter E x1 x2 Dx:"<<endl;
    cin>>E>>x1>>x2>>Dx;
    cout<<"Result:"<<endl;
    for (x=x1;x<x2;x+=Dx)
        cout<<x<<"   "<<func(x,E)<<endl;
    return 0;
}
Strony
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 5
26.11.2010, 14:32  [ТС]     Ряд Тейлора #6
МаксимМВ, спс тебе большое!))) Ты мне оч помог
вот конечный код
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
#include <iostream>
#include <math.h>
        
        
 using namespace std;
 double func(double x, double E)
{
        double a=1/x,num=1/x;
        int n=0;
        while (fabs(num)>E)
        {
                num*=(2*n+1)/((2*n+3)*x*x);
                a+=num;
        }
        return a;
}
 
int main(int argc, char *argv[])
{
        double E,x1,x2,Dx,x;
        cout<<"Enter E x1 x2 Dx:"<<endl;
        cin>>E>>x1>>x2>>Dx;
        cout<<"Result:"<<endl;
        for (x=x1;x<x2;x+=Dx)
                cout<<x<<"   "<<func(x,E)<<"("<<log((x+1)/(x-1))/2<<endl;
        return 0;
}
Yandex
Объявления
26.11.2010, 14:32     Ряд Тейлора
Ответ Создать тему
Опции темы

Текущее время: 16:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru