数值解
解一个非线性方程组。但是,它不允许包含任何约束,即使是已绑定的约束。那么当有约束条件时如何解非线性方程组呢?
满足约束的解决方案不一定存在。事实上,这个问题可能没有任何解决方案,即使它不满足您的约束条件。但是,有一些技术可以帮助您搜索满足约束的解决方案。金宝搏官方网站
为了说明这些技术,考虑如何求解方程组。
其中 必须为非负。方程有四个解:金宝搏官方网站
只有一个解决方案满足约束条件,即 .
这个fbnd
辅助函数在这个例子到此结束计算
数字上。
一般来说,一种
方程组
变量有孤立解,这意味着每个解没有相邻的也是解。金宝搏官方网站寻找满足约束条件的解的一种方法是生成一些初始点x0
,然后跑数值解
从每个x0
.
对于本例,要寻找方程组的解 ,取10个正态分布的随机点,平均值为0,标准偏差为100。
rng违约%的再现性N=10;%尝试10个随机起点pts=100*randn(N,2);%起始点是在pts中的行溶液= 0 (N, 2);%分配解决方案opts=options(“fsolve”,“显示”,“关”);对于k=1:N soln(k,:)=fsolve(@fbnd,pts(k,:),opts);%找到解决办法金宝搏官方网站终止
列出满足约金宝搏官方网站束的解决方案。
idx=soln(:,1)>=0&soln(:,2)>=0;disp(soln(idx,:))
10.0000 20.0000 10.0000 20.0000 10.0000 20.0000 10.0000 20.0000 10.0000 20.0000
数值解
有三种算法。每种方法都可能导致不同的解决方案。金宝搏官方网站
对于本例,请使用x0 = [1, 9]
并检查每个算法返回的解。
x0=[1,9];opts=options(@fsolve,“显示”,“关”,...“算法”,“信赖域狗腿”); x1=fsolve(@fbnd,x0,opts)
x1=1×2-1.0000 -2.0000
选择算法=“信任区”; x2=f解(@fbnd,x0,opts)
x2=1×2-1.0000 20.0000
选择算法=“levenberg marquardt”; x3=f解(@fbnd,x0,opts)
x3=1×20.9523 8.9941
在这里,三种算法对相同的初始点都找到了不同的解。金宝搏官方网站没有满足约束条件。报告的“解决方案”x3
甚至不是一个解,只是一个局部的驻点。
解非线性最小二乘问题
与范围解非线性最小二乘问题
试图最小化向量函数中各分量的平方和
. 因此,它试图解决这个方程
. 而且解非线性最小二乘问题
接受绑定约束。
用公式写出例题解非线性最小二乘问题
并解决它。
lb=[0,0];rng违约x0=100*randn(2,1);[x,res]=lsqnonlin(@fbnd,x0,lb)
找到了局部最小值。优化已完成,因为梯度的大小小于优化公差的值。
x=2×110.0000 20.0000
res=2.4783e-25
在这种情况下,,解非线性最小二乘问题
收敛到满足约束的解。你可以用解非线性最小二乘问题
使用全局优化工具箱多部分
用于自动搜索多个初始点的解算器。看见使用lsqcurvefit或lsqnonlin的多端口(全局优化工具箱).
铁铬镍铁合金
约束您可以重新制定问题并使用铁铬镍铁合金
如下:
给出一个恒定的目标函数,例如@(x) 0
,对于每个x
.
设定数值解
目标函数作为非线性等式约束铁铬镍铁合金
.
以通常的方式给出任何其他约束条件铁铬镍铁合金
语法。
这个FMTR
辅助函数在这个例子到此结束实现非线性约束。求解约束问题。
磅= (0,0);%下限约束rng违约可重复初始点x0 = 100 * randn (2, 1);选择= optimoptions (@fmincon,“算法”,“内点”,“显示”,“关”); x=fmincon(@(x)0,x0,[],[],[],[],[],[]磅,[],@fmincontr,opts)
x=2×110.0000 20.0000
在这种情况下,,铁铬镍铁合金
从一开始就解决问题。
此代码创建fbnd
辅助函数。
函数F=fbnd(x)F(1)=(x(1)+1)*(10-x(1))*(1+x(2)^2)/(1+x(2)^2+x(2));F(2)=(x(2)+2)*(20-x(2))*(1+x(1)^2)/(1+x(1)^2+x(1));终止
此代码创建FMTR
辅助函数。
函数[c,ceq]=fmincontr(x)c=[];%无非线性不等式ceq=fbnd(x);%F解的目标是非线性等式约束终止