蒙特卡洛法求非线性方程组

蒙特卡罗法的概念及应用

蒙特卡洛法 (又称统计试验法)是描述装备运用过程中各种随机现象的基本方法,而且它特别适用于一些解析法难以求解甚至不可能求解的问题,因而在装备效能评估中具有重要地位。 用蒙特卡洛法来描述装备运用过程是1950年美国人约翰逊首先提出的。
这种方法能充分体现随机因素对装备运用过程的影响和作用。 更确切地反映运用活动的动态过程。 在装备 效能评估 中,常用蒙特卡洛法来确定含有随机因素的效率指标,如发现概率、 命中概率 、平均毁伤目标数等;模拟 随机服务系统 中的随机现象并计算其数字特征;对一些复杂的装备运用行动,通过合理的分解,将其简化成一系列前后相连的事件,再对每一事件用随机抽样方法进行模拟,最后达到模拟装备运用活动或运用过程的目的。

  **蒙特卡罗法的实质**
  蒙特卡罗法的实质:当无法求得精确解时,进行随机抽样,根据统计试验求近似解。

用蒙特卡洛法求非线性方程组的一组实根
代码如下

function root = Mont(f,B,x0,eps)
% f:方程表达式
% B:随机数区间
% x0:初始值
% eps:根的精度
format long
if(nargin == 3)
	eps = 1.0e-4;
end
Fx = subs(sym(f),findsym(sym(f)),x0);
while abs(Fx)>eps
	Fx = subs(sym(f),findsym(sym(f)),x0);
	Fx1 = abs(Fx) + 10;
	while(abs(Fx1) >= abs(Fx))
		a = 2*B*rand() - B;
		x1 = x0 + a;
		Fx1 = subs(sym(f),findsym(sym(f)),x1);
	end
	x0 = x1;
end
root = x1;

function root = Erfen(f, a, b, epsilon)
%功能:蒙特卡罗法求非线性方程组f(x)=0的根
%输入参数:
%f是表示非线性函数f(x)的参数(变量),数据类型:函数句柄对象
%a--区间左端点, b--区间右端点, epsilon--控制精度的参数
%输出参数
%root--非线性方程f(x)= 0[a, b]内的根
if f(a)*f(b)>0
    root=NaN;      %无解
    return
end

while b-a>epsilon
    m=(a+b)/2;
    if f(a)*f(m)<=0
        b=m;
    else
        a=m;
    end
end

root=(a+b)/2;

end


输入以下代码
>>  f=@(x) x^3-2*x-5;
>> root=Erfen(f,2,3,1e-6)

蒙特卡洛法求非线性方程组_第1张图片

你可能感兴趣的:(matlab,图像处理,算法)