Download presentation
Presentation is loading. Please wait.
1
建模常见问题MATLAB求解
2
Content 符号代数线性方程(组)的MATLAB求解 最优化方法的MATLAB实现 插值、拟合MATLAB实现 一维搜索问题 线性规划
无约束非线性最优化问题 有约束非线性最优化问题 插值、拟合MATLAB实现
3
符号代数线性方程(组)的求解 MATLAB命令 (版本R2009a-7.8) solve
例:solve(‘p*sin(x)=r’) solve(‘p*tan(x)-r’) ans = ans= asin(r/p) atan(r/p) pi - asin(1/p*r) 如果符号表达式不含等号,则函数solve会自动将表达式转换成右端为0的符号方程.
4
符号代数线性方程(组)的求解 如果相对非默认变量求解,则solve函数必须指定变量 >> solve('a*x^2+b*x+c','a') ans = -(c + b*x)/x^2
5
符号代数线性方程(组)的求解 solve函数也可以用来求解方程组
>> [x,y]=solve('x^2+x*y+y=3','x^2-4*x+3=0') x = 1 3 y = -3/2
6
符号代数线性方程(组)的MATLAB求解 最优化方法的MATLAB实现
一维搜索问题 线性规划 无约束非线性最优化问题 有约束非线性最优化问题 插值、拟合MATLAB实现
7
最优化方法的MATLAB实现
8
一维搜索问题 有关函数介绍 fminbnd: 找到固定区间内单变量函数的最小值; 调用格式为
x=fminbnd(fun,x1,x2):返回区间{x1,x2}上fun参数描述的标量函数的最小值x. [x,fval]=fminbnd(…):返回解x处目标函数的值 [x,fval,exitflag]=fminbnd(…):exitflag描述函数退出条件,exitflag为1时,正常收敛于解。
9
符号代数线性方程(组)的MATLAB求解 最优化方法的MATLAB实现
一维搜索问题 线性规划 无约束非线性最优化问题 有约束非线性最优化问题 插值、拟合MATLAB实现
10
线性规划标准形式
11
线性规划 or
12
线性规划 矩阵形式 约束条件为等式,变量b非负
13
线性规划 MATLAB函数介绍 A*x<=b linprog 调用格式
x=linprog(f,A,b): 求解min f’*x, 约束条件为 A*x<=b x=linprog(f,A,b,Aeq,beq):增加等式约束Aeq*x=beq x=linprog(f,A,b,lb,ub,x0):lb变量x的下界,ub变量x的上界,x0初值 [x,fval,exitflag,output,lambda]=linprog(f,A,b, lb,ub,x0):
14
线性规划
15
线性规划
16
线性规划 f=[-7;-5]; A=[3 2 4 6 0 7]; b=[90;200;210]; lb=zeros(2,1);
[x,fval,exitflag,output,lambda]=linprog(f,A,b,[],[],lb)
17
线性规划 Optimization terminated. x = 14.0000 24.0000 fval = -218.0000
exitflag = 1 output = iterations: 5 algorithm: 'large-scale: interior point' cgiterations: 0 message: 'Optimization terminated.' constrviolation: 0 firstorderopt: e-007 lambda = ineqlin: [3x1 double] eqlin: [0x1 double] upper: [2x1 double] lower: [2x1 double]
18
符号代数线性方程(组)的MATLAB求解 最优化方法的MATLAB实现
一维搜索问题 线性规划 无约束非线性最优化问题 有约束非线性最优化问题 插值、拟合MATLAB实现
19
无约束非线性最优化问题
20
无约束非线性最优化问题
21
拟合 多项式曲线拟合 用polyfit函数拟合数据集的多项式在最小二乘意义上的系数,调用格式为:
P=polyfit(x,y,n), x和y是包含要拟合的x和y数据的矢量,n是多项式的阶次。 例:>> x=[ ]; >> y=[ ]; >> p=polyfit(x,y,3) p =
22
拟合 >> x2=1:.1:5; >> y2=polyval(p,x2); >> plot(x,y,'o',x2,y2) >> grid on
23
拟合
24
拟合 >> load census >> plot(cdate,pop,'ro')
Similar presentations