Вычислить все значения функции в интервале от -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 в конце программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д