Не сходятся ответы решенного интеграла по методу Монте Карло и простыми математическими функциями. Не могу понять, где ошибка.
15.09.2020
Ответ S1 правильный. Ответ S должен быть близким к S1.
Вот код программы:
clear all, clc, close all
a = 1; %Нижняя граница интеграла
b = 5; %Верхняя граница интеграла
N = 1000000; %Задаем кол-во случайных чисел
S = 0;
for i=[1;N]
x = a + rand(1,N)*(b-a); %Генерируем вектор случайных чисел с равномерным распределением
S = S + ((b-a)*sum(((x.^3 - x - 6).^(1/4))/(((15*(x.^4)) - 5*x - 18).^(1/5))))/N; %Считаем интеграл
disp("S =")
disp(S)
end
f = @(x)((x.^3 - x - 6).^(1/4))/(((15*(x.^4)) - 5*x - 18).^(1/5));
S1 = integral(f,a,b,'ArrayValued',true);
disp("S1 = ")
disp(S1)
Ответы
Не совсем ясно что вы циклом делаете? Какой метод реализуете?
Тут либо
но тогда sum как-то непонятно используется.
Либо надо без цикла. Все значения ф-ции есть/вычислить. Сделать sum, если это что-то вроде трапеций или прямоугольников, ну и . . . вобщем все.
если вы подразумеваете сложение на каждой итерации, то наверно не х, а х(i).
PS: Символ i является зарезервированным (также как и j). Лучше использовать что-то еще: n, k, num, . . . . .