Код не правильно считает функцию ? Что изменить? - C (СИ)
Формулировка задачи:
Код не правильно считает пример?Что изменить?
http://pixs.ru/showimage/wFpMc3XPGg_7286880_19609299.jpg
http://pixs.ru/showimage/wFpMc3XPGg_9259884_19609307.jpg
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main(int argc, char * argv[])
{
double h,x,t,ep,eps,fun,Pi;
int n;
puts("Программа составления таблицы функции,");
puts("заданной на интервале [0.1;0.8] с шагом 0.1");
puts(" _______________________________________________________________ ");
puts("| | | |");
puts("| x | (1/2) - (Pi/4)*|sinx| | (cos2nx)/(4n^2 - 1) |");
puts("|_________|____________________________|________________________|");
x=0;
h=0.1;
eps=0.00001;
ep=eps-0.00001;
Pi=3.14;
goto gohere;
while(x<=0.8)
{
t=x;
n=0;
while(fabs((1/2)-(Pi/4)*abs(sin(x)))>=ep)
{
t=(1/2)-(Pi/4)*abs(sin(x));
fun=cos(2*n*x)/(4*pow(n,2)-1);
if(t!=1)
{
if(t<eps)
{
printf("|%lf | %lf | %lf |\n", x, t, fun);
goto gohere;
}
else
printf("|%lf | %lf | %lf |\n", x, t, fun);
}
n=n+1;
}
gohere:
x=x+h;
}
puts(" _______________________________");
}Решение задачи: «Код не правильно считает функцию ? Что изменить?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double fabs(double);
int main()
{
system("chcp 1251>NUL");
double h, x, t, ep, eps, Pi, y1, y2, chlen;
int n;
puts("Программа составления таблицы функции,");
puts("заданной на интервале [0.1;0.8] с шагом 0.1");
puts(" <br> ");
puts("| | | |");
puts("| x | (1/2) - (Pi/4)*|sinx| | (cos2nx)/(4n^2 - 1) |");
puts("|<br>|<br>|<br>|");
x = 0;
h = 0.1;
eps = 0.00001;
//ep = eps - 0.00001;
Pi = 3.14;
while (x <= 0.8)
{
n = 1;
y2 = 0;
y1 = 1.0 / 2 - (Pi / 4)*fabs(sin(x));
do
{
chlen = cos(2 * n*x) / (4.0 * n*n - 1);
y2 += chlen;
n++;
} while (chlen >= eps);
printf(" %.1lf\t\t\t%lf\t\t%lf\n", x, y1, y2);
x += h;
}
puts(" <br> \n");
}
Объяснение кода листинга программы
- В начале кода подключаются необходимые библиотеки: stdio.h, stdlib.h и math.h.
- Определяется функция fabs, которая используется в коде.
- В функции main() задается задача программы и выводится приветствие.
- В цикле while происходит расчет значений функции на интервале [0.1;0.8] с шагом 0.1.
- Внутри цикла определены переменные n, y1, y2, chlen, которые используются в вычислениях.
- Переменная x инициализируется значением 0, а переменная h — значением 0.1.
- Переменная eps инициализируется значением 0.00001, которое используется в качестве точности вычислений.
- Переменная Pi инициализируется значением 3.14.
- В цикле while происходит расчет значений функции на интервале [0.1;0.8] с шагом 0.1.
- Внутри цикла определены переменные n, y1, y2, chlen, которые используются в вычислениях.
- Переменная x инициализируется значением 0, а переменная h — значением 0.1.
- Переменная eps инициализируется значением 0.00001, которое используется в качестве точности вычислений.
- Переменная Pi инициализируется значением 3.14.
- В цикле while происходит расчет значений функции на интервале [0.1;0.8] с шагом 0.1.
- Внутри цикла определены переменные n, y1, y2, chlen, которые используются в вычислениях.
- Значение переменной x увеличивается на 0.1 после каждой итерации цикла.
- Значение переменной y1 вычисляется как (1/2) - (Pi/4)*|sin(x)|.
- Значение переменной y2 вычисляется как сумма членов ряда cos(2nx)/(4nn-1) для n от 1 до 100.
- Значения переменных x, y1 и y2 выводятся на экран.
- Значение переменной x увеличивается на 0.1 после каждой итерации цикла.