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

Расходящиеся ряды или как правильно задать проверку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ структура данных http://www.cyberforum.ru/cpp-beginners/thread63519.html
помогите с решением (в структуре данных ):имеем в текстовом файле список студентов: фамилия ,имя шифр группы, название экзамена и оценки .сформировать лучших студентов ,у которых средние оценки даны в интервале . Список спорядковать по группе и фамилии: фамилия ,имя ,шифр группы, средний бал. Вывести две таблицы: данные и полученный результат.
C++ Размещение элементов массива по спирали Как разместить элементы массива (nxn) по спирали (начиная с нижнего левого угла против часовой стрелки)? Помогите пожалуйста!!(( http://www.cyberforum.ru/cpp-beginners/thread63488.html
C++ Функция strchr (Язык Си) -не выполняет=(
Не могу понять почему не работает, обьясните, пожалуйста, как исправить!! вот такое работает (это пример из компилятора): char *ptr, s='r'; ptr = strchr(s2, s); if (ptr) printf("The character %s is at position: %d\n", s, ptr-s2+1); else
ГРАФЫ C++
в Университете задали .Составить программу.(Графф) 1)Последовательность и количество вершин графа ,задает пользователь. 2)Если текущая вершина,без остатка делится на вышестоящую то располагается она слева , в противном случае справа . Обход вершин начинается сверху. Самая первая вершина делится на 1. Я по графам не силен , Помогите пожалуйста .
C++ Запись в файл и чтение из файла http://www.cyberforum.ru/cpp-beginners/thread63440.html
Здравствуйте!!! Как правильно сделать в с++ запись в файл и чтение из файла?? Объясните пожалуйста с примерами??
C++ После компиляции выдает ошибку После компиляции выдает такое сообщение: ------ Build started: Project: dz2, Configuration: Debug Win32 ------ Compiling... Skipping... (no relevant changes detected) c.cpp Build log was saved at "file://d:\laba\dz2\dz2\Debug\BuildLog.htm" dz2 - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== подробнее

Показать сообщение отдельно
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
14.11.2009, 03:01     Расходящиеся ряды или как правильно задать проверку
В случае, когда x = -1, боюсь, что ничего нельзя сделать. Ряд является знакочередующимся, поэтому и накладываються ограничения на значения X.

Добавлено через 44 минуты
Хотя, можно использовать следующее условие:
Если значение x<0, то вместо него можно использовать обратное ему значение для данной функции, а именно x=x/(x-1);
Например ln(1-(-1))=-ln(1-(1/2)).
В таком случае ряд перестает быть знакочередующимся, и операция выполняется намного быстрее.
Например для значений X = -1 и eps = 1e-7 количество итераций составляет 21, а для eps = 1e-8, всего лишь 22.
На примере своей программы приведу дополнительные условия:
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
#include <math.h>
#include <stdio.h>
#include <conio.h>
 
int main()
{
float x, eps;               
float Sum=0;                 
float Prev,temp=1;          
int n=1;                    
 
Start:
        printf("x="); scanf("%f",&x);
        if ( x<1 || x>=1)
    {
       clrscr();
       printf("X must be in -1<=X<1\n");
       goto Start;
    }
        printf("eps="); scanf("%f",&eps);
 
if ( x<0 ) x=x/(x-1);        // Проверка значения x
 
do
{
  Prev = Sum;                           
  temp *= x;                            
  Sum -= temp/n++;
}while(fabs(Sum-Prev)>eps);
 
if ( (x/(x-1)) < 0 ) Sum=-Sum;  //Меняем значение на противоположное
 
printf("Sum=%f  iteracii: %i",Sum,n);
getch();
 
return 0;
}
Добавлено через 47 минут
Немного ошибся в условиях, вот правильный
код
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
#include <math.h>
#include <stdio.h>
#include <conio.h>
 
int main()
{
float x, eps;               
float Sum=0;                 
float Prev,temp=1;          
int n=1;
bool Inv = false;                    
 
Start:
        printf("x="); scanf("%f",&x);
        if ( x<1 || x>=1)
        {
           clrscr();
           printf("X must be in -1<=X<1\n");
           goto Start;
        }
        printf("eps="); scanf("%f",&eps);
 
if ( x<0 )  // Проверка значения x
{
   x=x/(x-1);         
   Inv = true;
}
 
do
{
  Prev = Sum;                           
  temp *= x;                            
  Sum -= temp/n++;
}while(fabs(Sum-Prev)>eps);
 
if (Inv) Sum=-Sum;  //Меняем значение на противоположное
 
printf("Sum=%f  iteracii: %i",Sum,n);
getch();
 
return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru