matlab教程第五讲
第五讲 数值计算(二) 一、 线性优化 用命令x=lp(C,A,b,vlb,vub)。 [例] 最小值线性优化 f(x)=-5x1-4x2-6x3 x1-x2+x3≦20 3x1+2x2+4x3≦42 3x1+2x2≦30 (0≦x1, 0≦x2,0≦x3) First, enter the coefficients: f = [-5; -4; -6] A = [1 -1 1 3 2 4 3 2 0]; b = [20; 42; 30]; lb = [0,0,0]; % x的最小值 [0,0,0] ub = [inf,inf,inf]; Next, call a linear programming routine: x= lp(f,A,b,lb,ub); Entering x x = 0.0000 15.0000 3.0000 实际此命令改为: x = linprog(f,A,b,Aeq,beq) x = linprog(f,A,b,Aeq,beq,lb,ub) 对以上的问题可做如下的操作: First, enter the coefficients: f = [-5; -4; -6]; A = [1 -1 1 3 2 4 3 2 0]; b = [20; 42; 30]; lb = zeros(3,1); Next, call a linear programming routine: [x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb); x = 0.0000 15.0000 3.0000 fval = -78.0000 exitflag = 1 output = iterations: 6 cgiterations: 0 algorithm: lipsol lambda = ineqlin: [3x1 double] eqlin: [0 x1 double] upper: [3x1 double] lower: [3x1 double] [例] 线性优化 Min -400 x1-1000 x2-300 x3+200 x4 -2x2 + x3 + x4=0 2x1 +3x2 =2; 第一步:编写M文件 fxxgh.m function [F,G]=fxxgh(x) F=-x(1)*x(2); G(1)=(x(1)+x(2))*x(3)-120; 第二步:求解 在MATLAB工作窗中键入 x=[1,1,1]; % x取迭代初始值 options(13)=0; % 约束条件中有0个 = 号,其余为<= XL=[0,0,2]; % x取值范围的最小值 XU=[inf;inf;inf]; % x取值范围的最大值 [x,options]=constr( fxxgh ,x,options,XL,XU); options(8) %输出最小值 x ans = -900.0000 x = 30.0000 30.0000 2.0000 三、 曲线拟合与插值 曲 线 拟 合 和 插 值 函 数 polyfit(x, y, n) 对描述n阶多项式y=f(x)的数据 进行最小二乘曲线拟合 interp1(x, y, xo) 1维线性插值 interp1(x, y, xo, spline ) 1维3次样条插值 interp1(x, y, xo, cubic ) 1维3次插值 interp2(x, y, Z, xi, yi) 2维线性插值 interp2(x, y, Z, xi, yi, cubic ) 2维3次插值 interp2(x, y, Z, xi, yi, nearest ) 2维最近邻插值 在大量的应用领域中,人们经常面临用一个解析函数描述数据(通常是测量值)的任务。对这个问题有两种方法。在插值法里,数据假定是正确的,要求以某种方法描述数据点之间所发生的情况。曲线拟合或回归是人们设法找出某条光滑曲线,它最佳地拟合数据,但不必要经过任何数据点。图1说明了这两种方法。标有 o 的是数据点;连接数据点的实线描绘了线性内