在世界上最著名的赌城 —— 蒙特卡洛(摩纳哥)。有一种著名的数学方法,它通过对大量事件的统计结果来实现对确定性事件的计算,这就是蒙特卡洛法,也叫做随机模拟方法。
在《三体》中,魏成就是通过这个方法,将复杂的三体问题简化成一个数学模型,然后将繁重的公式推导转化成巨大的统计量。进而求解三体问题(当然,也失败了)。
下面,我就向大家简单介绍这个方法。
下面是全部代码,方便大家学习
1:求面积
代码语言:javascript复制%y1=2*sin(x) cos(x)
clear
n=100000; % 随机生成n个点
x=rand(1,n);
y=rand(1,n);
x=pi.*x;
y=3.*y;
y1=2*sin(x) cos(x);
k=0;
for i=1:n
if y1(i)>=0&&y1(i)<=2*sin(x(i)) cos(x(i))
k=k 1;
end
end
S=3*pi*(k/n)
%画出图像
x2=0:0.1:pi;
y2=2*sin(x2) cos(x2);
plot(x2,y2,'r')
hold on
y3=zeros(1,length(x2));
plot(x2,y3,'-')
hold on
2.1计算最大值的m文件
代码语言:javascript复制function [f,g]=jisuan(x);
f=3*x(1) 4*x(2)^2 5*x(2)*x(3) x(4)^2-x(4)*x(5);
g=[sum(x)-50
3*x(1) 4*x(2) x(3) x(4) x(5)-350
2*x(3) x(4) x(5)-250
x(1) x(2) x(3) x(4)*x(5)-1000
x(1) x(3)*x(4)-700];
2.2计算最大值的主函数
代码语言:javascript复制rand('state',sum(clock));
p0=0;%假设p0为最优解
for i=1:1000000
x=randi([0,50],1,5);
[f,g]=jisuan(x);
if all(g<=0)
if p0<f
x0=x;
p0=f;
end
end
end
p0
本文作者:南海一号