Доброго времени суток, есть проблема с 2мя задачами по cpp. Ежели кто осилит - гляньте и дайте вердикт, правильно или нет (по возможности с пояснением как нужно сделать правильно)
**Задача № 1)**Дано действительные числа x
, ε
(x!=0
, ε>0
). Вычислить приближенное значение бесконечной суммы. Вычисление сделать с заданной точностью ε
(пока абсолютная величина текущего члена ряда не станет меньше ε
). Формула прилагается
main()
{
float k=0, x, u=(x*x)/2, r, s=u, es=1e-3;
while (fabs(u)>=es)
{
r=(pow(-1, k+1)*pow(x,k+2))/(k+1);
u*=r;
s+=u;
k++;
}
cout<<"Sum = "<<s;
getch();
}
Задача №2)
Дано действительные числа x
, ε
(ε>0
). Вычислить с заданной точностью ε
приближенное значение бесконечной суммы и сравнить его с точным.
Формула (в ней вроде должна быть моргалка знаков начиная с первого или второго) и точное значение (справа):
main()
{
int n=0, u=1;
float eps=1e-3, s=u, s1, x;
while (abs(u)>=eps)
{
n++;
u=pow(-1,n)*n;
s+=u;
}
s1=1/(1-x);
if (fabs(s-s1)<=eps) cout<<"To4noe zna4enie";
else cout<<"Neto4noe zna4enie";
getch();
}
Лень разбирать ваш код так поздно, так что вот мои варианты:
1
const double eps = 1e-8;
double series(double x, double epsilon)
{
double term = x*x/2.0, sum = term;
for(int k = 0; fabs(term) > epsilon; ++k)
{
sum += (term *= -x*(k+1)/double((k+2)*(k+3)));
}
return sum;
}
int main(int argc, const char * argv[])
{
for(double x = -1.0; x <= 1.0; x += 0.1)
{
cout << fixed << setprecision(2) << setw(5) << x
<< setprecision(10) << setw(15) << series(x,eps) << endl;
}
}
2
const double eps = 1e-8;
double series(double x, double epsilon)
{
double term = 1.0, sum = term;
while(fabs(term) > epsilon)
{
sum += term *= x;
}
return sum;
}
int main(int argc, const char * argv[])
{
for(double x = -0.9; x <= 0.9; x += 0.1)
{
cout << fixed << setprecision(2) << setw(5) << x
<< setprecision(10) << setw(15) << series(x,eps)
<< setw(15) << (1.0/(1-x)) << endl;
}
}
Если вы изучали в школе геометрическую прогрессию, то должны бы понимать, что во втором случае никакой "моргалки знаков" нет...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как в с++ манипулировать данными из текстового файла, которые находятся на одной или нескольких строках?
Poco разбираюсь с этой библиотекой, появилась задача отправить файл на сервер в интернете, кто то знает как это сделатьни как не получатся найти...
По возможности избегать стандартных ф-ций (strlen), и типа данных string, строка обрабатывается как массив символов
Нужно перегрузить оператор считывания из потока для шаблонного классаВ шаблонном классе Set есть поле - массив элементов другого шаблонного...