Приближённое вычисление определённого интеграла. Исправление ошибок в коде - C (СИ)
Формулировка задачи:
Цель программы: вычислить неопределённый интеграл некоторой функции приближённо. Ошибки в участке кода, содержащем эту самую математическую функцию (у меня квадратичная). Объясните, пожалуйста, как их исправить. Перевод оповещений компилятора (в комментариях) мне ни о чём не сказал. Заранее спасибо.
#include <stdio.h>
double f (double x) {
f = x*x; /*в этой строке ошибка: lvalue required as left operand of assignment*/
return f; /*тут тоже ошибка: incompatible types when returning type 'double (*)(double)' but 'double' was expected*/
};
int main() {
double a, b; /*начало и конец отрезка, на котором надо найти интеграл*/
unsigned int n; /*число отрезков, на которые разбиваем [a; b] для вычисления интеграла*/
double h, s; /*шаг и сумма, в которую накапливаем значение*/
unsigned int i; /*счётчик*/
scanf("%f %f %d", &a, &b, &n);
h = (b - a)/n;
s=0;
for (i=0; i<n; i++) {
s += f(a+i*h); /*увеличиваем сумму на значение функции в точке a+i*h*/
};
s *= h;
printf("%f", s);
return 0;
}Решение задачи: «Приближённое вычисление определённого интеграла. Исправление ошибок в коде»
textual
Листинг программы
for (i=0; i<n; i++) {
s += f(a+i*h) * h;
};
Объяснение кода листинга программы
- Начинается цикл for, который выполняется n раз.
- Переменная i инициализируется нулем, а n - это количество раз, которые нужно выполнить цикл.
- На каждой итерации цикла в переменную s добавляется произведение f(a+i*h) и h.
- Значение переменной h остается неизменным на протяжении всего цикла.
- Функция f(a+ih) вычисляет значение функции f в точке a+ih.
- Значение переменной a также остается неизменным на протяжении всего цикла.
- Цикл завершается, когда значение i становится равным n.
- Значение переменной s будет содержать приближенное значение определенного интеграла.