
Другие языки программирования и технологии
Составить подпрограмму-функцию вычисления значений интеграла методом Симпсон.
Составить на Фортране

Не знаю как кого, а меня лично просто поражает вся абсурдность такого вот задания. И дело тут не в Фортране как таковом, я всё равно на нём ничего здесь писать не буду, а в отсутствии всякого смысла в таком расчёте: очень простой полином на очень простом сегменте интегрировать по Симпсону с точностью ε=1е-4 или ε=1е-5 ! Да какой даун это придумал ? А какой олигофрен в формулу для расчёта интегральной суммы вписал вот эту чушь: ⅓•N•(...), где N -чётное число? Он что -вообще, что-ли, не понимает что означает интеграл и как он приблизительно (a иногда хоть и приближёнными методами, но совершенно точно) вычисляется ?
Запустим на плюсах код:
#include <iostream>
using namespace std;
double Simpson(double (*Y)(double),
double a, double b, int n) { double i,
step = (b - a) / n, halfstep = step / 2,
u = Y(b - halfstep), v = 0., x; for (i = 1; i < n;
i++) { x = a + i * step; u += Y(x - halfstep);
v += Y(x); } return (Y(a) + Y(b) + 4. * u + 2. * v)
* step / 6.; }
double F(double x)
{ return -3. + x * (2. + x * x); }
int main()
{ int N; double s, S = 166.25;
cout.precision(16); while (true)
{ cout << "N = "; cin >> N;
s = Simpson(F, 0., 5., N); cout << s
<< ", error = " << s - S << endl; } }
Уже при количестве интервалов разбиения N=1 отрезка [0;5] ошибка получается нулевая -вот насколько этот метод точный ! Всё понятно ?

Запустим на плюсах код:
#include <iostream>
using namespace std;
double Simpson(double (*Y)(double),
double a, double b, int n) { double i,
step = (b - a) / n, halfstep = step / 2,
u = Y(b - halfstep), v = 0., x; for (i = 1; i < n;
i++) { x = a + i * step; u += Y(x - halfstep);
v += Y(x); } return (Y(a) + Y(b) + 4. * u + 2. * v)
* step / 6.; }
double F(double x)
{ return -3. + x * (2. + x * x); }
int main()
{ int N; double s, S = 166.25;
cout.precision(16); while (true)
{ cout << "N = "; cin >> N;
s = Simpson(F, 0., 5., N); cout << s
<< ", error = " << s - S << endl; } }
Уже при количестве интервалов разбиения N=1 отрезка [0;5] ошибка получается нулевая -вот насколько этот метод точный ! Всё понятно ?

" а в отсутствии всякого смысла в таком расчёте: очень простой полином на очень простом сегменте интегрировать по Симпсону с точностью ε=1е-4 или ε=1е-5 ! Да какой даун это придумал ?"
Тупость задания соответствует тупости студентов. Посмотрите внимательно на вопросы в разделе программирования.
Тупость задания соответствует тупости студентов. Посмотрите внимательно на вопросы в разделе программирования.
тут что-то в условиях напутано. или опечатка
Похожие вопросы
- Программирование на языке СИ с использованием подпрограммы-функции
- Как программировать задачи такого типа: вычисление неопределенного интеграла, нахождение собственных чисел матрицы....
- Каким образом программисты находят уравнения для вычисления значений?
- С++ решение интеграла методом Монте-Карло (нужно проверить что не так в коде)
- Напишите пожалуйста код простейшей программы вычисления значения 2 в степени N.
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных
- Что значит "функция возвращает значение" в С++?
- Почему в C++ передача аргумента функции по значению считается более быстрой, чем по ссылке?
- С++.Составить программу для определения таблицы значений функции у в произвольном диапазоне [a, b
- зачем нужны подпрограммы? и зависит ли это от ее метода (свойство, функция или процедура)
а сие задание - для обучения студентов. естественно совершенно наивное.
Но правилный ход - использовать квадратурные методы Гаусса,
Но это - развлечение не для всех.