Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-01-09
年龄: 50
帖子: 2
声望力: 0 ![]() |
![]()
各位高手,我是matlab方面的菜鸟,现在正在研究有关matlab中优化工具箱方面的问题,碰到几个简单的M文件都无法执行,很郁闷,恳请广大高手给予指点,分析一下原因,不胜感激,谢谢!
(1)问题:线性规划:求使函数f(x)=-5x1-4x2-6x3取最小值的x值,且满足约束条件: x1-x2+x3<=20; 3x1+2x2+4x3<=42; 3x1+2x2<=30; x1>=0,x2>=0,x3>=0; 我写的求解的M文件: f=[-5;-4;-6]; A=[1,-1,1;3,2,4;3,2,0]; b=[20;42;30]; lb=zeros(3,1); [x,fval]=linprog(f,A,b,[ ],[ ],lb); //Line 5 linprog是matlab线性规划优化工具箱函数,应该很简单的代码啊,结果就是执行出错,提示: Error On Line 5: Attempt to execute SCRIPT linprog as a function 为什么会这样,恳请高手给予指点,不胜感激,谢谢!!!!!! (2)问题:非线性规划:求函数f(x)=sinx+3取最小值时的x值 function f=myfun(x) syms x; f=sinx+3; //Line 2 x0=2; //计算起始点 [x,fval]=fminsearch(@myfun,x0); fminsearch是matlab非线性规划优化工具箱函数,应该很简单的代码啊,结果就是执行出错,提示: Error On Line 2: Missing Operator,Comma Or Semicolon 为什么会这样,恳请高手给予指点,不胜感激,谢谢!!!!!! |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2007-12-02
年龄: 44
帖子: 303
声望力: 31 ![]() ![]() ![]() ![]() |
![]()
你的第一个问题中 :
把第五行中的"/line 5" 删除就可以了,我算了下最值为 -78, x1=0,x2=15,x3=3 你的第二个问题中: sinx 应写为 sin(x) maltab 中我们常见的函数写法不太一样: 比如 指数函数 e^x 应该写为 exp(x) 对数函数 ln(x) 应该写为 log(x) 所有的三角函数都要加括号.例如: cosx 应该写为 cos(x) 反三角函数更要注意. arcsinx 应写为asin(x), arctanx 应该写为 atan(x) ps: maltab的注释语句是以"%"开头的! 你的第二问题的程序应该为: 打开 文本编辑器 (点matlab主窗口的工具栏的"新建"按扭,在左上方),然后输入 function f=myfun(x) syms x f=sin(x)+3; 点"保存", 注意不要更改文件名称!! 然后你回到 "命令执行窗口" 就是那个 有">>"符号的窗口. 输入如下命令: x0=2;%计算起始点 [x,fval]=fminsearch(@myfun,x0) 应该就没问题了. 建议: 请先拿本matlab基础知识的书籍学习下,不然matlab给你带来的只有烦躁了! 相信你一定行. 有什么问题多来这里转转,别不好意思,大家都是这么过来的 ![]() |
![]() |
![]() |