Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сумма произведения с заданной точностью  (Прочитано 9134 раз)
0 Пользователей и 1 Гость смотрят эту тему.
zuze
Опытный

ru
Offline Offline
Пол: Мужской
Россия, Москва


« : 20-12-2010 12:37 » 

Условие задачи такое:
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью eps=0.001. x - меняется от a = -0.5 до b = 0.5, шаг h = (b-a)/10. В прикреплённом файле находятся функции S(x) и Y(x). Вывести число итераций, необходимое для достижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций.

Код:
#include <windows.h>
#include <math.h>
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>

// Прототип функции S(x)
void S(void);
// Прототип функции Y(x)
double Y(double x);

int main(void)
{

    S();
    
    getch();
    return 0;
}
// Функции Y(x)
double Y(double x)
{
double y;
    y = (3.14*pow(x,3))/2;
    return y;
}
// Функции S(x)
void S(void)
{
    double a = -0.5, b = 0.5, s = 0.0, p, eps = 0.001, x, h;
    int k = 1;
    // Фиксируем начальное значение
    x = a;
    // Шаг
    h = (b-a)/10;

    do
    {
        do
        {
              p = (pow(-1, k+1)/k+(pow(-1, k)*6)/(pow(k, 3)*3.14*3.14))*sin(k*3.14*x);
              s += p;
              k++;
        }
        while (s <= eps);
        cout << setw(15) << x << setw(15) << Y(x) << setw(15) << s;
        x += h;
    }
    while (x <= b);
    cout << setw(15) << k;
}

Проблема в том что программа запускается и встаёт, как я понимаю условие  s <= eps выполняется всегда и она не может выйти из этого цикла и из-за этого ни какие результаты не выводятся, правда я не понимаю почему оно всегда выполняется.

Поясните пожалуйста или вообще ошибка может в другом.

* s_y.JPG (8.28 Кб - загружено 1063 раз.)
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 20-12-2010 13:09 » 

Внимательно посмотри как у тебя изменяется параметр h, тк именно он отвечает за выход из второго цикла.

А ещё лучше проделай пару-тройку итераций ручками и калькулятором, на листке бумаги, выписывая значения всех переменных в каждом шаге. Всё станет очевидно.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
taube2011
Новенький

ua
Offline Offline

« Ответ #2 : 29-12-2010 22:14 » 

А ещё лучше проделай пару-тройку итераций ручками и калькулятором, на листке бумаги, выписывая значения всех переменных в каждом шаге. Всё станет очевидно.

Какое значение принимает переменная s? В этом-то и загвоздка while (s <= eps);
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 31-12-2010 17:12 » new

В чём загвоздка? Написать на бумажке три строчки?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines