Вычислить, используя метод Монте-Карло, определенный интеграл - C (СИ)
Формулировка задачи:
Добрый день!
Исчислить, используя метод Монте-Карло, определенный интегралом:
y=sin(2x) + cos(x) x ∈ [0, 2]
Правильно ли это?
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> int main() { float x, y; /* описание переменных*/ if( x>0 && x<2){ /*операции сравнивания*/ y = sin(2*x) + cos(x); printf(" Value: %f\n", y); } return 0; }
Решение задачи: «Вычислить, используя метод Монте-Карло, определенный интеграл»
textual
Листинг программы
#include <stdio.h> #include <math.h> #include <time.h> #include <stdlib.h> double funkc(int x) { return (sin(2*x) + cos(x)*x); } int main() /* главная функция*/ { int i, a[10]; double sum=0; /* описание переменных*/ srand(time(NULL)); for(i=0; i<10; i++) // случайные числа { a[i] = rand()%3; printf("%d, ", a[i]); } for(i=0; i<10; i++) { sum+=funkc(a[i]); } printf("\nResult = %.3lf\n",sum*(2./10)); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы: iostream.h, math.h, time.h, stdlib.h
- Определяем функцию с именем
funkc
, которая принимает целочисленный аргумент и возвращает значение double. Внутри функции происходит вычисление определенного интеграла методом Монте-Карло. - В функции main() создаем массив из 10 элементов типа int с именем
a
. Инициализируем переменную sum типа double значением 0. - Задаем начальное значение для генератора случайных чисел с помощью функции srand(time(NULL)).
- Заполняем массив
a
случайными целыми числами в диапазоне от 0 до 2 с помощью функции rand()%3 и оператора присваивания. - Выводим на экран значения массива
a
с помощью цикла for и оператора printf(). - Проходим по массиву
a
с помощью цикла for и суммируем результаты вызова функцииfunkc
для каждого элемента массива в переменную sum. - Выводим на экран значение переменной sum, умноженное на коэффициент 2/10, с помощью функции printf().
- Возвращаем 0 из функции main(), чтобы указать, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д