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

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

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

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

10.06.2013, 17:39. Просмотров 229. Ответов 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 итераций не уходит в период. Как это можно объяснить преподавателю по информатике?
Уже голову сломал с этим вопросом...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 17:39     Обосновать решение уравнения
Посмотрите здесь:

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

Решение матричного уравнения - C++
Даны массивы C(n) и D(n). Сформировать матрицу A(n,m),как произведение массивов C и DT и матрицу B, элементы которой вычислить по...

Решение численного уравнения - C++
Решить численное уравнение с одной неизвестной, методом Ньютона.С++ a+b*x+c*cos(d*x+e)=0 разработать алгоритм решения функциональной...

Решение линейного уравнения - C++
Надо написать программу решения линейного уравнения. Входные данные поступают с клавиатуры. Предусмотреть обработку ошибок. Установить...

Решение нелинейного уравнения - C++
1. Написать программу нахождения приближенного решения нелинейного уравнения: -методом деления отрезка пополам -методом касательных ...

Записать решение уравнения - C++
нужно решение этого уравнение на языке с++: w\, =\, \cos \left(\frac{{z}^{2}+{x}^{2}}{4+y} \right)

Решение нелинейного уравнения. - C++
Товарищи программисты! У меня к вам просьба прошу помочь мне с задачей. Мне нужно составить программу для решения нелинейного уравнения...

записать решение уравнения на С++ - C++
Добрый день. необходимо решить данное уравнение n=cos({z}^{2}+\frac{{x}^{2}}{4}+y) За ранее спасибо.

Решение линейного уравнения - C++
Напишите функцию,которая решает линейное уравнение ax+b=0 и записывает результат в переменную передаваемую по ссылке. В случае нахождения...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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.
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
Как это можно объяснить? Есть мысль, что операции с в дальнейшем становятся на столько незначительными, что их программа не вычисляет)) правда меня не очень устраивает свое объяснение)
Yandex
Объявления
10.06.2013, 18:43     Обосновать решение уравнения
Ответ Создать тему
Опции темы

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