matlab 使用随机投点法计算定积分 ,以投点个数n为输入参数。

作者&投稿:祗姬 (若有异议请与网页底部的电邮联系)
用matlab的随机投点法计算下图的函数~

你手写的公式看得不是很清楚,这里认为被积函数如下

如果我理解的不对,你可以自己修改代码中ycr的公式。理论上nmax越大越接近真实解。程序执行最后一行时,可能会出现警告,没关系,可以正常返回精确的积分值用以对比随机投点的计算精度
nmax=1000;count=0;
for i=1:nmax
x=rand();
y=rand();
ycr=exp(-x^2/2)/sqrt(2*pi);
if ycr>=y
count=count+1;
end
end
area=count/nmax
eval(int('exp(-x^2/2)/sqrt(2*pi)',0,1)) %真实积分值


你想问什么?
r=rand(n,t); //获得n行t列的随机数,t为维数,即未知数的数量
x=r(:,1)此处根据要具体情况自行修正
积分:s=sum(积分式) //注意要使用.* .^等
剩下的照公式来

你想问什么?
r=rand(n,t); //获得n行t列的随机数,t为维数,即未知数的数量
x=r(:,1)此处根据要具体情况自行修正
积分:s=sum(积分式) //注意要使用.* .^等
剩下的照公式来


东山区15782956790: matlab 如何用随机投点法求一元函数在闭区间上的最值? -
但薛伊缓: 以对勾函数为例,闭区间为[a,b],a=0.001,b=20为例;注:由于随机因素的影响,每次结果略有差异,当N足够大时,差异可以忽略.f=@(x) x+1./x; a=0.001; b=20; N=10000;%随机投点个数 rnd=rand(N,1)*(b-a)+a; rndValue=f(rnd); [maxValue,maxInd]=max(rndValue); maxX=rnd(maxInd); [minValue,minInd]=min(rndValue); minX=rnd(minInd); maxValue,maxX,minValue,minX

东山区15782956790: matlab利用随机投点求一元函数在某个区间的最小值 -
但薛伊缓: 利用matlab求一元函数在某一区间的最小值.工具/原料 电脑 matlab 方法/步骤 1、用“导数为零”法求极值点,具体代码及其结果如下图所示:2、采用优化算法求极小值,具体代码及其结果如下图所示:3、绘制图形观察最小值,下图是代码:4、绘制图形观察最小值,下图是绘制的函数图形:5、据图形观察,重设fminbnd的搜索区间

东山区15782956790: 如何用matlab进行投点计算 -
但薛伊缓: .理论上nmax越大越接近真实解.程序执行最后一行时,可能会出现警告,没关系,可以正常返回精确的积分值用以对比随机投点的计算精度 nmax=1000;count=0; for i=1:nmaxx=rand();y=rand();ycr=exp(-x^2/2)/sqrt(2*pi);if ycr>=ycount=count+1;end end area=count/nmaxeval(int('exp(-x^2/2)/sqrt(2*pi)',0,1)) %真实积分值

东山区15782956790: matlab用普丰投针法求π值的代码 -
但薛伊缓: %投掷次数为n,针和直线相交的次数为m %分析知真和直线相交的概率为p=2l/pid %则有pi=2nl/md clear;clc; d=1;% 设置两条平行线之间的距离,相当于在一张纸上画很多间距为d的平行线 l=0.6;% 投针的长度(ln=10000000;% n为投掷次数 ...

东山区15782956790: Matlab生成定区域内指定数目随机坐标点 -
但薛伊缓: b=zeros(100,100);%定义一个全0矩阵%下面寻找50个随机位置,分别标号为1到50 c=randperm(10000);%将10000个数据随机打乱 idx=find(cb(idx)=c(idx);%将1到50赋值给全0矩阵%经测试最大值是50,而且随机分布,有值的地方是节点位置,1到50分别是节点标号

东山区15782956790: 如何在MATLAB由两点确定的直线中随机取一个点 -
但薛伊缓: a=[1,2];%点a的坐标为(1,2) b=[3,4];%点b的坐标为(3,4) t=rand;%生成一个介于0到1的随机数 p=t*a+(1-t)*b%你要的介于a和b之间的点

东山区15782956790: 用蒲丰氏方法在计算机上计算圆周率,取a=4,l=3,用matlab 、c语言、c++等 -
但薛伊缓: clear a=1;% 设置两条平行线之间的距离 l=0.6;% 投针的长度 counter=0;% 针与平行线相交的次数 n=10000000;% 投掷次数 x=unifrnd(0,a/2,1,n);%产生n个(0,a/2)之间均匀分布的随机数,这里a/2是投针的中点到最近的平行线的距离 phi=...

东山区15782956790: matlab 用newton 及random(n,m)投点求解方程组 -
但薛伊缓: % 用Newton流线发及Random(n,m)n% % 表示维数,m表示总点数求解非线性方程组% % (x+0.5)*(x+0.5)/2+y*y/4=1,y*(x-0.5)=0.5 function main() clc; options = optimset('TolFun', eps); [x,fval] = fsolve(@test, [0.2 0.2]', options)function q = test(p) x = p(1); y = p(2); q(1) = (x+0.5)*(x+0.5)/2+y*y/4-1; q(2) = y*(x-0.5)-0.5;

东山区15782956790: MATLAB中,随机生成100个点,点间距离等于某个固定的数 -
但薛伊缓: 这100个点中的任意两个点间的距离等于某个固定的数:这个可能实现吗? 随便取一个点(x0,y0) 在x轴和y轴的四个方向上以大于5的步长递增就能满作要求 最简单的如果固定步长为6 x=-300:6:294; y=-300:6:294;

东山区15782956790: 如何利用MATLAB产生随机坐标? -
但薛伊缓: clear; clc; a = 10; %%%%% 长 b = 5; %%%%% 宽 n = 100; %%%%% 点数量 cxd1 = a*rand(n,1); %%%%%% 产生横坐标 cxd2 = b*rand(n,1); %%%%%% 产生纵坐标 cxd = [cxd1 cxd2]; %%%%%% 生产随机点 figure(1) plot(cxd1,cxd2,'o') %%%%%% 绘图,从图可以大致看出随机分布 figure(2) hist(cxd1) %%%%%% 验证横坐标随机分布 figure(3) hist(cxd2) %%%%%% 验证纵坐标随机分布

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网