Вычислить все значения функции в интервале от -5 до 5 с шагом 0.1 - C (СИ)
Формулировка задачи:
Доброго времени суток! При выполнении первой лабораторной работы по Си возник вопрос по присвоению функции переменной. Дана программа: "Вычислить все значения функции в интервале от -5 до 5 с шагом 0.1". Программу я написал, вот она:
Заранее спасибо за ответ! Пожалуйста, помогите разобраться.
Работающая программа:
#include <math.h>
#include <stdio.h>
#define A -5
#define B 5
#define H 0.1
int main(void)
{
double x = A;
while (x <= B)
{
double y=x * exp(x) + 2 * sin(x) - sqrt(fabs(pow(x, 3) - pow(x, 2)));
printf("x = %.1f | y = %.4f\n", x, y);
x += H;
}
return 0;
}И проблема: Почему если строку double y=x * exp(x) + 2 * sin(x) - sqrt(fabs(pow(x, 3) - pow(x, 2))); переместить в начало программы, где объявлена переменная x, то программа выводит повторяющееся число в значениях функции?
:Программа после перемещения строки в начало:
int main(void)
{
double x = A;
double y=x * exp(x) + 2 * sin(x) - sqrt(fabs(pow(x, 3) - pow(x, 2)));
while (x <= B)
{
printf("x = %.1f | y = %.4f\n", x, y);
x += H;
}
return 0;
}Отрывок из результата работы программы:
x = -5.0 | y = -10.3633 x = -4.9 | y = -10.3633 x = -4.8 | y = -10.3633 x = -4.7 | y = -10.3633 x = -4.6 | y = -10.3633 x = -4.5 | y = -10.3633
Если же данная строка находится внутри цикла "while" - программа работает нормально:
Результат работы программы:
x = -5.0 | y = -10.3633 x = -4.9 | y = -9.9736 x = -4.8 | y = -9.6071 x = -4.7 | y = -9.2640 x = -4.6 | y = -8.9444
Решение задачи: «Вычислить все значения функции в интервале от -5 до 5 с шагом 0.1»
textual
Листинг программы
#include <math.h>
#include <stdio.h>
#define A -5
#define B 5
#define H 0.1
int main(void)
{
double x = A;
double y;
while (x <= B)
{
y=x * exp(x) + 2 * sin(x) - sqrt(fabs(pow(x, 3) - pow(x, 2)));
printf("x = %.1f | y = %.4f\n", x, y);
x += H;
}
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: math.h и printf.h
- Определение границ интервала: A = -5, B = 5, H = 0.1
- Объявление переменных: x = A, y = ?
- Цикл while: выполнение до тех пор, пока x <= B
- Внутри цикла вычисление значения y по формуле: y = x exp(x) + 2 sin(x) - sqrt(fabs(pow(x, 3) - pow(x, 2)))
- Вывод значения x и y с шагом 0.1
- Увеличение значения x на H после каждой итерации цикла
- Возврат 0 в конце программы