• Предмет: Информатика
  • Автор: Logicsmile007
  • Вопрос задан 1 год назад

Нужно решить задание по программированию на С++.
Заранее спасибо!

(30 баллов за ответ)

Приложения:

Ответы

Ответ дал: dimafriends
1
#include <iostream>
#include <iomanip>
#include <math.h>

using namespace std;

const float EPS=1e-3;

float f(float x) // функция, вычисляющая сумму членов ряда
{
    int k=0;     // номер члена ряда
    int k_fac=1; // k!
    float a=(2*k+1)*powf(x, 2*k) / k_fac; // вычисляем 0-ой член ряда
    float s=a;    // s - сумма ряда
    while(fabs(a)>=EPS) // пока k-й член ряда (a) больше, чем заданная точность (EPS)
    {
        k++;                                // переходим к следующему члену ряда
        k_fac*=k;                            // вычисляем k! для нового k
        a=(2*k+1)*powf(x, 2*k) / k_fac;         // вычисляем k-ый член ряда
        s=s+a;                                // прибавляем k-ый член ряда к сумме ряда
    }
    return s;    // возвращаем результат - сумму ряда
}

float f2(float x)
{
    return (1+2*x*x)*exp(x*x);
}

int main()
{
    cout<<"  X"<<setw(10)<<" F(X)"<<setw(10)<<" F2(X)"<<endl;
    for(int i=0;i<10;i++)
    {
        float x=0+i*0.1;
        cout<<x<<setw(10)<<f(x)<<setw(10)<<f2(x)<<endl;
    }
    return 0;
}


dimafriends: X F(X) F2(X)
0 1 1
0.1 1.03025 1.03025
0.2 1.12407 1.12408
0.3 1.2911 1.29113
0.4 1.54902 1.54903
0.5 1.92603 1.92604
0.6 2.46528 2.46533
0.7 3.23196 3.23199
0.8 4.32396 4.32398
0.9 5.88943 5.88952
Logicsmile007: Можете, так сказать, "разжевать" что к чему и как?
dimafriends: float f(float x) // функция, "суммирующая ряд"
{
int k=0; k_fac=1;
float a=(2*k+1)*powf(x, 2*k) / k_fac;
float s=a;
while(fabs(a)>=EPS)
{
k++;
k_fac*=k;
a=(2*k+1)*powf(x, 2*k) / k_fac;
s=s+a;
}
return s;
}
dimafriends: Извините, тут комментариях нельзя ничего толком написать, даже переход на следующую строку не работает.
dimafriends: И комментарии до 500 символов - даже функция не умещается.
Вас заинтересует