Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 10

Посчитать сумму ряда с заданной точностью, возникает ошибка

30.05.2015, 09:03. Показов 781. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача, посчитать сумму ряда f(x) = 1 - ((Vx)^2)/2! + ((Vx)^4)/4! - ((Vx)^6)/6! + ..., V - номер варианта.
Вот мой код:
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
#include <iostream>
#include <math.h>
#include <locale>
using namespace std;
 
 
 int fact(int i)
{
    return !i ? 1 : i * fact(i - 1);
  }
int main() {
   const double eps=0.00001;
   const double V=9;
   int a,b; 
   cout<<"[a; b]?";
   cin>>a>>b;
   double f[b], Sum[b];
      for (int i = a; i < b; i++)
        {f[i]=1; Sum[i]=1;}
   int i=a; 
   for (i=a; i<=b; i++) { int j=2;
    do{
        
        f[i]*=pow(V*i,j)/fact(j);
        Sum[i]+=f[i];
        j+2;
      } while (fabs(Sum)>eps);}
        for (i=a; i<=b; i++){
    cout<<"For x  = "<<i<<"  Summ= "<<Sum<<endl;}
    system("pause");
    return 0;
    
 
}
Компилятор ругается на строку
C++
1
} while (fabs(Sum)>eps);}
фразой cannot convert `double*' to `double' for argument `1' to `double fabs(double)'

Кто нибудь подскажет в чем может быть причина?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2015, 09:03
Ответы с готовыми решениями:

Посчитать сумму ряда с заданной точностью
Посчитать сумму ряда с заданной точностью: \arctan \: x\: =\: \sum_{n=0}^{\infty}\frac{{(-1)}^{n}{x}^{2n+1}}{(2n+1)}\: =\: x\: -\:...

Найти сумму ряда с заданной точностью, если дан общий член ряда
Найти сумму ряда с точностью Е=-4 (0.0001) общий член которого n=n*-n2 (n kvadrat)... Надо написать программу, т.е текст..на языке Си...

Посчитать сумму ряда, ограничивая число элементов ряда первым элементом, меньшим заданной величины
Посчитать сумму ряда, ограничивая число элементов ряда первым элементом, меньшим заданной величины eps. Определить реальную точность ряда. ...

15
 Аватар для FireOwl
62 / 44 / 14
Регистрация: 01.07.2009
Сообщений: 145
30.05.2015, 09:08
Очевидно функция fabs принимает как аргумент значение типа double. А ты передаешь ссылку на массив.
1
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 10
30.05.2015, 09:10  [ТС]
Т.е. у меня должно быть
C++
1
 while (fabs(Sum[i])>eps);}
?

Всё, скомпилировалось, спасибо большое ) (Блин, какая у меня глупая ошибка была)
0
 Аватар для FireOwl
62 / 44 / 14
Регистрация: 01.07.2009
Сообщений: 145
30.05.2015, 09:11
Возможно. Я не рассматривал код подробно, и в нем нет функции fabs.

Upd. Не за что =)
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 10
30.05.2015, 09: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
#include <iostream>
#include <math.h>
using namespace std;
 
 
 int fact(int i)
{
    return !i ? 1 : i * fact(i - 1);
  }
int main() {
   const double eps=0.00001;
   const double V=9;
   int a,b; 
   cout<<"[a; b]?";
   cin>>a; cin>>b;
   double f[b], Sum[b];
      for (int i = a; i < b; i++)
        {f[i]=1; Sum[i]=1;}
   int i=a; 
   for (i=a; i==b; i++) { 
       int j=2;
    while (fabs(Sum[i])>eps){
        
        f[i]*=pow(V*i,j)/fact(j);
        Sum[i]+=f[i];
        j+2;
      }
       }
        for (i=a; i<=b; i++){
    cout<<"For x  = "<<i<<"  Summ= "<<Sum[i]<<endl;}
    system("pause");
    return 0;
    
 
}
По сути должен вывести мне мини табличку (условно говоря):
Fox x=какое-то число из диапазона заданного; Sum=сумма ряда.

Вместо этого:
[a; b]?
-5
5
For x = -5 Summ= 3.47668e-310
For x = -4 Summ= 0
For x = -3 Summ= 1.78949e-307
For x = -2 Summ= 2.2251e-307
For x = -1 Summ= 1
For x = 0 Summ= 1
For x = 1 Summ= 1
For x = 2 Summ= 1
For x = 3 Summ= 1
For x = 4 Summ= 1
For x = 5 Summ= 1
Для продолжения нажмите любую клавишу . . .
Т.е. для всех числе меньше нуля - считает, а всё что больше =1, разве что х=15 посчитал вроде как...
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
30.05.2015, 09:31
Цитата Сообщение от Ceterus Посмотреть сообщение
Sum=сумма ряда.
сумма т.е одна
а у тебя
Цитата Сообщение от Ceterus Посмотреть сообщение
Sum[b]
зачем тебе столько сумм?
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 10
30.05.2015, 09:33  [ТС]
Для каждого х своя сумма, разве нет?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
30.05.2015, 09:34
Цитата Сообщение от Ceterus Посмотреть сообщение
Для каждого х своя сумма,
какого x????
Цитата Сообщение от Ceterus Посмотреть сообщение
Задача, посчитать сумму ряда
одну сумму, одного ряда
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 10
30.05.2015, 09:40  [ТС]
f(x) = 1 - ((Vx)^2)/2! + ((Vx)^4)/4! - ((Vx)^6)/6! + ..., V
там есть х, значение функции при х и т.д.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.05.2015, 10:05
Цитата Сообщение от Ceterus Посмотреть сообщение
C++
1
2
3
int a,b; 
//...
double f[b], Sum[b];
и что говорит товарищ компилятор?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
30.05.2015, 10:42
Цитата Сообщение от Даценд Посмотреть сообщение
и что говорит товарищ компилятор
у него наверное GCC там такие штучки дозволяются
Цитата Сообщение от Ceterus Посмотреть сообщение
значение функции при х
какой функции?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.05.2015, 11:16
Если я правильно понял, нужно найти сумму ряда, слагаемые которого вычисляются по формуле
https://www.cyberforum.ru/cgi-bin/latex.cgi?{-1}^{i} \frac{{(Vx)}^{2i}}{(2i)!}
сумму нужно считать пока слагаемое не станет меньше заданной точности.
Тогда как-то так
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
#include <iostream>
#include <math.h>
using namespace std;
int fact(int i)
{
    return !i ? 1 : i * fact(i - 1);
}
int main() 
{
    const double eps=0.00001;
    const double V=9;
    double x1=-5, xn=5, step=1;
    double sn, Sum;
    for (double x=x1; x<=xn; x+=step)
    {
        int i=0;
        Sum=sn=pow(-1.0, i)*pow(V*x, 2*i)/fact(2*i);
        while (sn>eps)
        {
            i++;
            sn=pow(-1.0, i)*pow(V*x, 2*i)/fact(2*i);
            Sum+=sn;
        }
        cout<<"For x=" << x << " Summ=" << Sum << endl;
    }
    system("pause");
    return 0;
}
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
30.05.2015, 11:28
Цитата Сообщение от Даценд Посмотреть сообщение
sn>eps
fabs(sn)
ну или, поскольку, мы в С++ abs(sn)
слагаемое может быть и отрицательным
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
30.05.2015, 11:36
ValeryS,
да, забыл учесть
C++
1
while (fabs(sn)>eps)
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 10
31.05.2015, 10:04  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
ну или, поскольку, мы в С++ abs(sn)
На абс он мне ругается call of overloaded `abs(double&)' is ambiguous, с fabs всё ок.

Попытался ввести этот код - не выводит ничего. Толи Dev-C++ идиот, то ли я (склоняюсь ко второму)
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
31.05.2015, 10:45
Ceterus, почему бы Вам не ознакомиться, наконец, с темой
Вычисление функций разложением в ряд Тейлора
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2015, 10:45
Помогаю со студенческими работами здесь

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

Найти сумму ряда с заданной точностью
Всем привет! Ребят, очень нужна ваша помощь! Не могу решить задачку, помогите пожалуйста! Всю голову сломал((( Текст задачки:

Найти сумму ряда с заданной точностью
Найти сумму ряда с точностью E=10-3, общий член которого an=2n/(n-1)

Вычислить сумму ряда с заданной точностью
Вычислить для x с точностью епсилон больше нуля суму. Модуль х меньше 2.4. Мне не понятно что делать с левой частью. И что такое...

Вычислить сумму ряда c заданной точностью
Вычислить с точностью 10-5 (завершить суммирование ряда, когда член ряда меньше, чем 10-5).


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru