2 新建m文件把
function [c,ceq]=opt_conl(x)
ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25]%%去掉第二个式子,那是线性的,不是非线性的
c=[]
贴进去保存,ceq是非线性等式约束,楼主的第二个式子是线性的。
3 在command window里输入
>>options=optimset('LargeScale','off','Display','iter','TolFun',1e-30,'TolX',1e-15,'TolCon',1e-20)
x0=[111]lb=[000]Aeq=[8 14 7]Beq=[56]%%线性等式约束用Aeq和beq
[x,f_opt,c,d]=fmincon('opt_funl',x0,[],[],[8 14 7],[56],[000],[],'opt_conl',options)
max Directional First-order
Iter F-countf(x) constraintStep-size derivative optimality Procedure
0 4 994 27 Infeasible start point
1 10 955.336 22.9 0.25 -295 18.3 infeasible
2 14 964.0125.77310.811 6.26 Hessian modified
3 18 967.157 0.52421 2.83 4.27 Hessian modified
4 22 965.898 0.20111-1.38 3.67
5 26 957.1783.8861 -110.251
6 30 961.697 0.20391 4.24 1.59
7 34 961.564 0.14161 -0.196 1.63
8 38 961.679 0.029871 0.1 0.0113
9 42 961.715 1.734e-0051 0.03650.002
10 46 961.715 9.332e-01112.12e-005 0.000116 Hessian modified twice
11 50 961.7152.56e-0091 -5.53e-0093.51e-005 Hessian modified
12 54 961.715 6.622e-01112.95e-0092.67e-006 Hessian modified
13 58 961.715 5.947e-01217.25e-0117.69e-006 Hessian modified
14 62 961.715 1.357e-0121 1.4e-0123.45e-006 Hessian modified
15 72 961.715 1.386e-012 0.0156 1.3e-0112.55e-005 Hessian modified
16 76 961.715 3.553e-01511.84e-0123.54e-006 Hessian modified
17 81 961.7150 0.5 -1.55e-0146.49e-007 Hessian modified
18 85 961.715 7.105e-0151 -5.16e-015 8e-006 Hessian modified
19 89 961.715017.06e-0158.32e-006 Hessian modified twice
20 93 961.715018.83e-0196.51e-006 Hessian modified twice
21 97 961.71501 -6.05e-0281.33e-006 Hessian modified twice
Optimization terminated: magnitude of search direction less than 2*options.TolX
and maximum constraint violation is less than options.TolCon.
No active inequalities.
x =
3.5121
0.2170
3.5522
f_opt =
961.7152
c =
4
d =
iterations: 21
funcCount: 97
stepsize: 1
algorithm: 'medium-scale: SQP, Quasi-Newton, line-search'
firstorderopt: 1.3292e-006
cgiterations: []
message: [1x142 char]
一、在MATLAB中用square函数来表示,其调用形式为 y=square(t,DUTY) ,其作用类似于sin(t),用以产生一个时长为t、幅值为±1的周期性方波信号,其中的DUTY参数表示占空比,即在信号的一个周期中正值所占的百分比。例如频率为30Hz的周期性方波信号的MATLAB程序和图形如下:
1、在MATLAB的命令框内输入方波程序,如下图所示:
2、在输入完成图形显示函数plot后,会显示出来图形,grid,ylim意思是对图形显示的y坐标进行限制。该程序是将图形y坐标限制在(-1.5,1.5)。
二、y=square(t,DUTY) 函数默认的幅值是±1,想要改变幅值,只需要乘以一个系数即可,改变周期的话,将频率30改成其他即可。如y=2*square(t,DUTY)。程序和图形如下图所示:
扩展资料:
MATLAB系统由MATLAB开发环境、MATLAB数学函数库、MATLAB语言、MATLAB图形处理系统和MATLAB应用程序接口(API)五大部分构成。
1、开发环境
MATLAB开发环境是一套方便用户使用的MATLAB函数和文件工具集,其中许多工具是图形化用户接口。它是一个集成的 用户工作空间,允许用户输入输出数据,并提供了M文件的集成编译和调试环境,包括MATLAB桌面、命令窗口、M文件编辑调试器、MATLAB工作空间和在线帮助文档。
2、数学函数
MATLAB数学函数库包括了大量的计算算法。从基本算法如四则运算、三角函数,到复杂算法如矩阵求逆、快速傅里叶变换等。
3、语言
MATLAB语言是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用这种语言能够方便快捷建立起简单运行快的程序,也能建立复杂的程序。
4、图形处理
图形处理系统使得MATLAB能方便的图形化显示向量和矩阵,而且能对图形添加标注和打印。它包括强大的二维三维图形函数、图像处理和动画显示等函数。
5、程序接口
MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran等其它高级编程语言进行交互的函数库。该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换,其主要功能包括在MATLAB中调用C和Fortran程序,以及在MATLAB与其它应用程序间建立客户、服务器关系。
参考资料来源:百度百科-MATLAB
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)