Вычислить, используя метод Монте-Карло, определенный интеграл - 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(), чтобы указать, что программа успешно завершилась.