Сумма бесконечного ряда - C (СИ) (79217)
Формулировка задачи:
Господа профессионалы помогите пожалуйста, я вроде как сделал задачку на СИ но не уверен в правильно ли он считает... Вот само задание и моя программка:
Вычисления с заданной точностью
Найти сумму ряда с заданной точностью. Точность и значение переменной х вводить с клавиатуры. Осуществить проверку ошибок ввода. Считать ошибочными значения х, которые приводят к расхождению ряда.
#include <conio.h>
#include <stdio.h>
#include <math.h>
void main(){
clrscr();
printf("Введите точность и значение числа 'x': ");
float eps,x;
scanf("%f%f",&eps,&x);
int n=1;
float S=0,q=1;
do{
q=x/(sqrt(fabs(x))+(n*n));
S+=q;
n++;
}
while(q>=eps);
printf("Сумма ряда = %f количество итераций = %d",S,n-1);
getch();
}Решение задачи: «Сумма бесконечного ряда»
textual
Листинг программы
int temp = x/(sqrt(fabs(x))+(n*n));
q=temp;
while(q>=eps){
q=x/(sqrt(fabs(x))+(n*n));
if(q>temp)
{
printf("Raid rozhodytsia, x vvedeno neverno");return 0;
}
temp=q;
S+=q;
n++;
}
Объяснение кода листинга программы
- Сначала мы объявляем переменную
tempи присваиваем ей значениеx/(sqrt(fabs(x))+(n*n)). Это формула для нахождения члена ряда, который мы добавляем к переменнойS. - Затем мы присваиваем переменной
qзначениеtemp, чтобы использовать его в цикле. - Мы входим в цикл while, который продолжается, пока
qбольше или равноeps(предположительно, очень маленькое число). - Внутри цикла мы снова вычисляем
qс помощью формулыx/(sqrt(fabs(x))+(n*n)). - Если новое значение
qбольше, чем текущее значениеtemp, мы выводим сообщение об ошибкеRaid rozhodytsia, x vvedeno nevernoи возвращаем 0. - Если новое значение
qменьше или равноtemp, мы обновляемtempэтим новым значением. - Мы добавляем новое значение
qк переменнойS. - Мы увеличиваем значение
nна 1. - Цикл продолжается, пока
qбольше или равноeps.