Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

annatroll

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[more] Помогите, пожалуйста! Нужно вывести на экран таблицу значений функции у(х) и ее разложения в ряд s(х) с точностью до eps. Вывести число итераций, необходимое для достижения заданной точности. Вычисление s(х) и у(х) оформить в виде функций. Код я написала, но, должно быть, не правильно вывела формулу суммы, поэтому значения у(х) и s(x) не совпадают. Объясните, пожалуйста, в чем моя ошибка)
 
a          b           s(x)                                     eps               y(x)
                        до бесконечности
-2.5     1.3         сумма sin(2k-1)*x/(2k-1)      10^(-4)         Пи*signx/4
                       k=1  
 
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
 
typedef double (*uf)(double, double, int &);
 
void tabl(double, double, double, double, uf);
double y(double, double, int &);
double s(double, double, int &);
 
int main()
{
    double a, b, h, eps;
    cout <<"Vvedite a="; cin>>a;
                 cout <<"Vvedite b="; cin>>b;
                 cout <<"Vvedite h="; cin>>h;
                 cout <<"Vvedite eps="; cin>>eps;
    cout << setw(8) <<"x"<<setw(15)<<"y(x)"<<setw(10)<<"k" << endl;
    tabl(a, b, h, eps, y);
    cout << endl;
    cout << setw(8) <<"x"<<setw(15)<<"s(x)"<<setw(10)<<"k" << endl;
    tabl(a, b, h, eps, s);
 
    return 0;
}
 
void tabl(double a, double b, double h, double eps, uf fun)
{
    int k = 0;
    double sum;
    for(double x = a; x < b + h/2; x+=h)
    {
        sum=fun(x, eps, k);
        cout <<setw(8)<<x<<setw(15)<<sum<<setw(10)<<k <<endl;
    }
}
 
double y(double x, double eps, int &k)
{
    
    const double Pi=3.14159;
    if (x>0) return Pi/4;
    else if (x<0) return -Pi/4;
    else return 0;
}
 
double s(double x, double eps, int &k)
{
    double a, c, sum =0;
                 a=c=x;
    k=1;
    while(fabs(c)>eps)
    {
        c=sin(2*k-1)/(2*k-1);
        a*=c;
        sum+=a;
        k++;
    }
 
    return sum;
}
 

Всего записей: 1 | Зарегистр. 13-12-2014 | Отправлено: 19:34 13-12-2014 | Исправлено: annatroll, 19:58 13-12-2014
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Задачи по C/С++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru