• Регистрация
TiaGrant
TiaGrant 0.00
н/д

Не сходятся ответы решенного интеграла по методу Монте Карло и простыми математическими функциями. Не могу понять, где ошибка.

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)

Теги

    15.09.2020

    Ответы

    • aBoomest
      aBoomest+942.89
      15.09.2020 19:08

      Не совсем ясно что вы циклом делаете?  Какой метод реализуете?

      Тут либо

      for i=1:N

      но тогда sum как-то непонятно используется.

      Либо надо без цикла. Все значения ф-ции есть/вычислить. Сделать sum, если это что-то вроде трапеций или прямоугольников, ну и . . . вобщем все.

      если вы подразумеваете сложение на каждой итерации, то наверно не х, а х(i).

      PS: Символ i является зарезервированным (также как и j). Лучше использовать что-то еще: n, k, num, . . . . .