How to Perform Monte Carlo Integration in MATLAB | MATLAB Tutorial
How to do a Monte Carlo Integral in MATLAB! Covers the theory behind the numerical method and integration while presenting a program to execute montecarlo integration in MATLAB! 🤝 Support me on Patreon! https://www.patreon.com/philparisi_ 🌱 Want to say thanks? https://buymeacoffee.com/philparisi_ 🌏 More on Insta! https://www.instagram.com/philparisi_ 🔥 And the rest! https://linktr.ee/philparisi_ LEARN MATLAB 55-video MATLAB programming certification! https://trainings.internshala.com/matlab-training 2hr Complete Beginner Basics in MATLAB: https://youtu.be/EtUCgn3T9eE MATLAB Formula Cheat Sheet: https://philparisi.weebly.com/code.html CHAPTERS 0:00 Goal 0:07 Monte Carlo Theory 3:11 Setting up Code 5:24 Generate and Assign Points 9:35 Clean the Output 11:51 Plotting the Solution 12:26 Integral Calculation 13:18 MATLAB's integral() 13:51 Percent Error 14:25 Applying Script to Other Integrals YOU DIG NUMERICAL INTEGRATION? Check out other advanced topics... Indefinite and Finite Integrals https://youtu.be/5zBJjIj52OE Fourier Transform https://youtu.be/2kvemW3W1Vk Analytical vs. Numerical Solutions https://youtu.be/sYGRquJWfM0 Dice Roll Simulation https://youtu.be/Kn9CpUqzt2o Convolution https://youtu.be/hcyy144Gu60 Make a .MP4 From a Plot https://youtu.be/2ig_9syIDek ---------------------------FREE CODE FROM VIDEO ------------------------------------------------------------------------------------- % MonteCarlo - Integral Calculation clc, clearvars, close all, format compact % Equation to integrate over. Integral of this from a to b. f = @(x) exp(x).*x.^2.*sqrt(exp(x)); % Parameters N = 10000; % number of points to generate randomly a = 2; % integral lower x limit - manual b = 4; % integral upper x limit - manual M = 1.4*max(f(linspace(a,b))); % upper y bound = c*max y_value from equation % Generate Dots for i = 1:N % generate random pt x_val = rand(1)*(b-a) + a; y_val = rand(1)*M; % compare random against the curve fx = f(x_val); % logic statement if y_val REPLACE_WITH_LESS_THAN_SYMBOL fx % under the curve - blue under(i,1) = x_val; under(i,2) = y_val; else % above the curve - red above(i,1) = x_val; above(i,2) = y_val; end end % Filter out zeros under2(:,1) = nonzeros(under(:,1)); under2(:,2) = nonzeros(under(:,2)); above2(:,1) = nonzeros(above(:,1)); above2(:,2) = nonzeros(above(:,2)); % Plotting plot(above2(:,1),above2(:,2),'ro','MarkerFaceColor','r') hold on plot(under2(:,1),under2(:,2),'bo','MarkerFaceColor','b') title('Monte Carlo Integration'), xlabel('x'), ylabel('y') legend('above','under') % Integral Calcs MonteCarlo_Integral = length(under2) / N * (M*(b-a)) MATLAB_Integral = integral(f,a,b) PercentError = abs(MATLAB_Integral - MonteCarlo_Integral)/MATLAB_Integral * 100 --------------------------VECTORIZED VERSION OF CODE-------------------------------------------------------------- % Monte Carlo Integration % Vectorized Version - shorter and faster than what is shown in the video clc, clearvars, close all, format compact % This method optimizes performance over simplicity % Dots are not colored red and blue tic f = @(x) 10 + 5*sin(5*x); % Parameters N = 10000; a = 2; b = 4; M = 1.4*max(f(linspace(a,b))); % Generate Random Points x = rand(1,N)*(b-a) + a; y_val = rand(1,N)*M; % Perform Integral Calculation fx = f(x); PercentUnderCurve = sum(y_val REPLACE_WITH_LESS_THAN_SYMBOL fx) / N; Monte_Integral = PercentUnderCurve * M * (b-a) Matlab_Integral = integral(f,a,b) PercentError = abs(Monte_Integral-Matlab_Integral)/Matlab_Integral*100 toc % Plot plot(x,y_val','.') hold on plot(x,fx,'.') ---------------------------------------------------------------------------------------------------------------------- HELP A BROTHER OUT Thank you so much for watching! Please consider subscribing as a thank you if you benefited from this content! :D HELPING MY BROTHERS AND SISTERS OUT Comment below and I will happily answer all your questions, queries, and conundrums... whether or not they pertain to programming ;) 🤝 Support me on Patreon! https://www.patreon.com/philparisi_ 🌱 Want to say thanks? https://buymeacoffee.com/philparisi_ 🌏 More on Insta! https://www.instagram.com/philparisi_ 🔥 And the rest! https://linktr.ee/philparisi_
Download
0 formatsNo download links available.