0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
1

Написать программу для вычисления ряда

06.07.2018, 17:12. Показов 2088. Ответов 8
Метки нет (Все метки)

Написать программу для вычисления ряда https://www.cyberforum.ru/cgi-bin/latex.cgi?1+x+{x}^{2}+{x}^{3}+...=\sum_{n=0}^{\infty }{x}^{n}=\frac{1}{1-x}.модуль x<1.
Я написала программу ,но вычисляет она неправильно.Где ошибка?
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
#include<iostream>
#include<cmath>
#include<cstdlib>
using namespace std;
void rad(double *a, int N, double x) {
    int i;
    a[0] = 1;
    for (i = 1; i <= N; i++)
        a[i] = a[i - 1] * pow(x, i);
}
void show(double *a, int k) {
    int i;
    for (i = 1; i <= k; i++)
        cout << a[i] << " ";
    cout << endl;
}
double myrad(double *a, int k) {
    double s = 1;
    int i;
    for (i = 1; i <= k; i++)
        s += a[i];
    return s;
}
int main() {
    double *a;
 
    double x;
    int N = 100;
    a = new double[N + 1];
    int i;
    cout << "x=";
    cin >> x;
    abs(x) < 1;
    if (x >= 1)
        return 0;
    rad(a, N, x);
    show(a, N);
    for (i = 1; i <= 5; i++)
        cout << N * i / 5 << ":" << myrad(a, N*i / 5) << ":" << ((1 - myrad(a, N*i / 5)) / (1 / (1 - x))) * 100 << "%\n";
    cout << "1/(1-x)=" << 1 / (1 - x) << endl;
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2018, 17:12
Ответы с готовыми решениями:

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

Написать программу для вычисления суммы ряда
Ребята, напишите программу, кому не сложно

Написать программу для вычисления суммы ряда
Написать программу для вычисления суммы ряда: значение n ввести с клавиатуры. Вывести ...

Написать программу для вычисления суммы ряда
12. Написать программу для вычисления суммы ряда: П^4/96=1/1^4+1/3^4+1/5^4+...+1/(2n+1)^4...

8
Модератор
Эксперт функциональных языков программированияЭксперт Python
32426 / 17970 / 3763
Регистрация: 12.02.2012
Сообщений: 30,170
Записей в блоге: 5
06.07.2018, 17:34 2
В этом коде копаться не хочется. Он откровенно плох:
1) такие ряды суммируют не арифметическими, а итерационными циклами (до достижения точности);
2) функция pow не нужна - текущий член ряда выражается через предыдущий
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
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
double sumseq(double x, double s=0.0, double a=1.0, double eps=1.0e-13)
{
    if (a<=eps) return s;
    return sumseq(x,s+a,a*x,eps);
}    
 
int main(int argc, char *argv[])
{
    double x;
    
    for (x=0; x<0.9999; x+=0.1)
    {
      printf("%lf %lf %lf\n",x,sumseq(x),1.0/(1.0-x));
    }
    printf("\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
06.07.2018, 17:46 3
анастасия1501, ряд можно вычислять по количеству членов ряда или до определённой точности.
вот код если задано количество:
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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    int n;
    double a=1.0, x, s=0.0;
    cout <<"n="; cin >>n;
    do
    {
    cout <<"x="; cin >>x;
    if (x<=-1 || x>=1) cout <<"-1<x<1 !!! Repeat please...\n";
    }
    while (x<=-1 || x>=1);
    
    for(int i = 1; i < n; i++)
    {
    a*=x;
    s+=a;    
    }
    cout <<"sum="<<1+s<<"\n";
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
06.07.2018, 18:08  [ТС] 4
Catstail, я только учусь программировать.все делаю по книге.
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
06.07.2018, 18:11 5
Цитата Сообщение от анастасия1501 Посмотреть сообщение
все делаю по книге.
и в книге советуют для такой задачи применять массивы и функции ?

чуть изменил код:
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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    int n;
    double a=1.0, x, s=1.0;
    cout <<"n="; cin >>n;
    do
    {
    cout <<"x="; cin >>x;
    if (x<=-1 || x>=1) cout <<"-1<x<1 !!! Repeat please...\n";
    }
    while (x<=-1 || x>=1);
    
    for(int i = 1; i < n; i++)
    {
    a*=x;
    s+=a;    
    }
    cout <<"sum="<<s<<"\n";
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
06.07.2018, 18:16  [ТС] 6
Yetty, да,у меня сейчас тема массивы и функции.а таким методом,которым вы написали,а тоже умею уже)
другие программы так у меня получились,а эта не работает
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
06.07.2018, 18:38 7
Цитата Сообщение от анастасия1501 Посмотреть сообщение
у меня сейчас тема массивы и функции
понятно. лучше сообщать об этом сразу например сделать то-то то-то используя динамический массив и процедурное программирование. держите код:
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 <iostream>
#include <ctime>
using namespace std;
 
void Set (double *a, int N, double x) 
{
    a[0] = 1.0;
    for (int i = 1; i < N; i++)
        a[i]=a[i-1]*x;
}
 
void Print (double *a, int N) 
{
    for (int i = 0; i < N; i++)
    cout << a[i] << " ";
    cout << endl;
}
 
double Sum (double *a, int N) 
{
    double s = 0.0;    
    for (int i = 0; i < N; i++)
        s += a[i];
    return s;
}
 
int main() 
{ 
    double x, eps=0.0000000001;
    
    int n;
    cout <<"n="; cin >>n;
    
    do
    {
    cout <<"x="; cin >>x;
    if (x<=-1-eps || x>=1+eps) cout <<"-1<x<1 !!! Repeat please...\n";
    }
    while (x<=-1-eps || x>=1+eps);
    
    double*a = new double[n];
    
    Set (a, n, x);
    Print (a, n);
    cout <<Sum(a,n)<<"\n";
    delete[]a;
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 03.06.2017
Сообщений: 80
06.07.2018, 18:41  [ТС] 8
Yetty, в следующий раз буду знать)спасибо за помощь)
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
06.07.2018, 18:48 9
анастасия1501, подкорректируйте строки 37-39. замените такими:
C++
1
2
3
if (x<=-1+eps || x>=1-eps) cout <<"-1<x<1 !!! Repeat please...\n";
    }
    while (x<=-1+eps || x>=1-eps);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.07.2018, 18:48
Помогаю со студенческими работами здесь

Написать программу для вычисления суммы ряда
Помогите создать программу для вычисления суммы ряда.

Написать программу для вычисления ряда с заданной точностью e (e>0)
Здравствуйте! Помогите написать программу для вычисления ряда с заданной точностью e (e&gt;0).

Написать программу для вычисления ряда с заданной точностью e (e>0)
Здравствуйте! Помогите написать программу для вычисления ряда с заданной точностью e (e&gt;0).

Написать программу для вычисления ряда с заданной точностью
Нужно написать программу для вычисления ряда с заданной точностью eps. У самого беда с этими...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru