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

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

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

Обосновать решение уравнения - C++

10.06.2013, 17:39. Просмотров 247. Ответов 2
Метки нет (Все метки)

Имеется формула http://www.cyberforum.ru/cgi-bin/latex.cgi?1-\frac{1}{2^2}+\frac{1}{3^2}-\frac{1}{4^2}+\frac{1}{5^2}-\frac{1}{6^2}+......\pm \frac{1}{n^2}.
Есть код:
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
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
int main()
{
    double s = 0;
    int sign = 1;
    for(int i = 1; i < 25; i++)
    {
        s += sign / static_cast<float>(i * i);
        sign = -sign;
        cout << "s = " << setprecision(70) << s << endl;
    }
    cout << "total s = " << setprecision(70) << s << endl;
    system("pause");
    return 0;
}
Результат:
s = 1
s = 0.75
s = 0.861111111111
s = 0.798611111111
s = 0.838611111111
s = 0.810833333333
s = 0.831241496599
s = 0.815616496599
s = 0.827962175611
s = 0.817962175611
s = 0.826226638421
s = 0.819282193976
s = 0.82519935374
s = 0.820097312923
s = 0.824541757368
s = 0.820635507368
s = 0.82409571498
s = 0.821009295227
s = 0.82377937833
s = 0.82127937833
s = 0.823546952026
s = 0.821480836323
s = 0.823371195492
s = 0.821635084381
total s = 0.821635084381
Нужно по идеи найти с какой по счету итерации ответ будет в периоде.
Но он даже при 5000 итераций не уходит в период. Как это можно объяснить преподавателю по информатике?
Уже голову сломал с этим вопросом...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 17:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обосновать решение уравнения (C++):

Решение уравнения - C++
Помогите решить уравнение я сам смутно все понимал еще и на paskal, а тут для меня вообще cut])) |1+ x&gt;1 y=|x+1 ...

Решение уравнения - C++
Помогите пожалуйста с кодом для решения вот такого уравнения. В голову ничего не лезет(

Решение уравнения - C++
Дано уравнение: Х в квадрате+У в квадрате=К в квадрате Найти все целочисленные решение если х,у,к = от 1 до 30 #include &lt;iostream&gt;...

Решение уравнения - C++
Доброго времени суток! Ребят помогите с задачкой пожалуйста Задано уравнение: a*x+b*y=c, где a,b,c,x,y - целые неотрицательные числа....

Решение уравнения - C++
Пожалуйста мне надо решить уравнение tgx=thx. Надо показать, что корней бесконечно, и найти приблизительные значения корней. Желательно...

Решение уравнения - C++
Помогите перевести уравнение ни сишечку задача такая 1. Создать консольный проект. 2. Написать программу вычислений в соответствии...

2
Sizeofvoid34
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 4
10.06.2013, 18:32 #2
Скорее всего дело в этой строчке кода:
C++
1
 s += sign / static_cast<float>(i * i);
Так как переменная s является типом данных double, то после преобразования типов значение дробной части переменной s искажается. Попробуйте объявить переменную s типа данных float или привести произведение i * i к double.
0
samarcs
0 / 0 / 0
Регистрация: 01.08.2012
Сообщений: 82
10.06.2013, 18:43  [ТС] #3
s = 1
s = 0.75
s = 0.861111104488
s = 0.798611104488
s = 0.838611125946
s = 0.810833334923
s = 0.831241488457
s = 0.815616488457
s = 0.82796216011
s = 0.817962169647
s = 0.826226651669
s = 0.819282233715
s = 0.825199365616
s = 0.820097327232
s = 0.82454174757
s = 0.82063549757
s = 0.824095726013
s = 0.821009278297
s = 0.823779344559
s = 0.821279346943
s = 0.823546946049
s = 0.821480810642
s = 0.823371171951
s = 0.821635067463
total s = 0.821635067463
Для продолжения нажмите любую клавишу . . .
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
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
int main()
{
    float s = 0;
    int sign = 1;
    for(int i = 1; i < 25; i++)
    {
        s += sign / static_cast<float>(i * i);
        sign = -sign;
        cout << "s = " << setprecision(12) << s << endl;
    }
    cout << "total s = " << setprecision(12) << s << endl;
    system("pause");
    return 0;
}
не сильно изменилось, только если сделать 5000 итераций, то с какой-то итерации число перестает изменяться через итерацию
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
s = 0.8224670886993408203000000000000000000000000000000000000000000000000000000
s = 0.8224672675132751465000000000000000000000000000000000000000000000000000000
Как это можно объяснить? Есть мысль, что операции с в дальнейшем становятся на столько незначительными, что их программа не вычисляет)) правда меня не очень устраивает свое объяснение)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 18:43
Привет! Вот еще темы с ответами:

решение уравнения - C++
доброго времени суток :) Даны целые положительные числа a и b. Необходимо найти целые (не обязательно положительные) числа x и y, такие,...

Решение квадратного уравнения - C++
Написать программу решение квадратного уравнения. Программа должно проверять правельность исходных данных и в случае, если коэффициент при...

Решение квадратного уравнения - C++
Вообщем задание. Написать программу для решения квадратного уравнения, где инкапсулированный метод вычисления х1 и х2... Я вот написал...

Решение уравнения с 9 переменными - C++
C++ сам знаю плохо, увы. Но решил воспользоваться им, чтоб решить задачку Кольцевой хеш (Rolling hash) по алгоритму рабина карпа. Вот сам...


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

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

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