可以用matlab求函数最值
例一
如求y=x^2+1的最小值(-1<=x<=1)
思路:
1.随机生成定义域中的任意数
2.判断该数的函数值是否比前一个的小
3.重复步骤1和2
补充:如何生成区间[a,b]里的任意值呢?
x=a+(b-a)*rand;
代码如下
m=inf;
n=10000000;
for i=1:n
x=-1+rand*2;
y=x*x+1;
if y<m
m=y;
xx=x;
end
end
y
xx
求积分,特别适用于高维问题
例二
求x^3在0-1上的积分
随机生成的点落在积分图像里的概率p=所要求积分s/已知图像的面积S
n=10000;
m=0;
for i=1:n
x=rand;
y=rand;
if y<=x^3
m=m+1;
end
end
S=1;
p=m/n;
s=S*p
此题里的S表示的是边长为1,x,y在(0,1),恰好把x^3包住。
结果如下:
利用此题的思路也可以近似求出圆周率