如何用matlab建立数学模型及求解。哪位高手给个模版。
推荐于2018-03-11
=
linprog(c,A,b,Aeq,beq,lb,ub,x0,options)其中,x:最优解;val:最优解处的函数值;exitflag:程序结束时的状态指示(>0:
收敛,0:
函数调用次数或迭代次数达到最大值(该值在options中指定)
<0:
不收敛);
Output:包含以下数据的结构变量(iterations
实际迭代次数,
cgiterations
实际PCG迭代次数(大规模计算用),algorithm
实际使用的算法);lambda:包含以下数据的结构变量(ineqlin
不等式约束的LAGRANGE乘子,
eqlin
等式约束的LAGRANGE乘子,
upper
上界约束的LAGRANGE乘子,
lower
下界约束的LAGRANGE乘子);c:目标函数矩阵;A/Aeq:不等式/等式限制条件系数矩阵;b/beq:不等式/等式限制条件常数项矩阵;lb:自变量定义域下限;ub:自变量定义域上限;x0:初始解(缺省时程序自动取x0=0)options:包含算法控制参数的结构
实际应用是并没有这么复杂,很多参数缺省就可以了,用你的例题演示就是:(在命令窗口输入)f=[-2;-3];A=[0,1;4,2;1,1];b=[12;20;6];lb=zeros(3,1);[x,fval]=linprog(f,A,b,[],[],lb)计算出x=[0;6],即x1=0,x2=6fval=-18解释一下linprog函数只能求最小值,所以将目标函数系数全变为相反数,最终得到的结果应为fval的相反数希望以上内容对你学习matlab能有一定帮助,以后可以多看看帮助文件,里面讲解很详细。
线性规划的求解程序名为linprog,调用格式为
[x,fval,exitflag,output,lambda]
=
linprog(c,A,b,Aeq,beq,lb,ub,x0,options)
其中,x:最优解;
val:最优解处的函数值;
exitflag:程序结束时的状态指示(>0:
收敛,0:
函数调用次数或迭代次数达到最大值(该值在options中指定)
<0:
不收敛);
Output:包含以下数据的结构变量(iterations
实际迭代次数,
cgiterations
实际PCG迭代次数(大规模计算用),algorithm
实际使用的算法);
lambda:包含以下数据的结构变量(ineqlin
不等式约束的LAGRANGE乘子,
eqlin
等式约束的LAGRANGE乘子,
upper
上界约束的LAGRANGE乘子,
lower
下界约束的LAGRANGE乘子);
c:目标函数矩阵;
A/Aeq:不等式/等式限制条件系数矩阵;
b/beq:不等式/等式限制条件常数项矩阵;
lb:自变量定义域下限;
ub:自变量定义域上限;
x0:初始解(缺省时程序自动取x0=0)
options:包含算法控制参数的结构
实际应用是并没有这么复杂,很多参数缺省就可以了,用你的例题演示就是:(在命令窗口输入)
f=[-2;-3];
A=[0,1;4,2;1,1];
b=[12;20;6];
lb=zeros(3,1);
[x,fval]=linprog(f,A,b,[],[],lb)
计算出x=[0;6],即x1=0,x2=6
fval=-18
解释一下linprog函数只能求最小值,所以将目标函数系数全变为相反数,最终得到的结果应为fval的相反数
希望以上内容对你学习matlab能有一定帮助,以后可以多看看帮助文件,里面讲解很详细。
简单来说,linprog的一个常用标准形式是x = linprog(f,A,b,Aeq,beq,lb,ub),它用来求解最小化问题 min f(x), s.t. Ax ≤ b Aeq*x = beq lb ≤ x ≤ ub.
所以针对你的问题,相当于minz'=-2x1+3x2,代码是x=linprog(-[2;3],[0,1;4,2;1,1],[12;20;6],[],[],[0;0],[])。运行得到结果x=[0;6],即x1=0,x2=6
如何利用matlab软件建立多元回归数学模型的方法有:
1、多元回归数学模型是线性的,可以用regress()函数求得。例如
f(x1,x2,x3)=a1+a2*x1+a3*x2+a4*x3 %多元线性回归函数
求解方法:
x1=[。。。];x2=[。。。];x3=[。。。];
X=[ones(n,1) x1 x2 x3];
y=[。。。];
a = regress(y,X); %ai为多元线性回归函数的拟合系数
2、多元回归数学模型是非线性的,可以用lsqcurvefit()或nlinfit()函数求得。例如
f(x1,x2,x3)=a1+a2*exp(x1)+a3*exp(x2)+a4*exp(x3) %多元非线性回归函数
求解方法:
x1=[。。。];x2=[。。。];x3=[。。。];y=[。。。];
x=[x1 x2 x3];
func=@(a,x)a(1)+a(2)*exp(x:1)+a(3)*exp(x:2)+a(4)*exp(x:3);%自定义函数
x0=[1 1 1]; %初值(根据问题来定)
a=lsqcurvefit(func,x0,x,y) %ai为多元非线性回归函数的拟合系数
或 a= nlinfit(x,y,func,x0)