Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-02-25
年龄: 42
帖子: 2
声望力: 0 ![]() |
![]()
大家好 我想学习MATlab中优化工具箱的算法 为了要研究非线性规划 现在从头学起 有很多疑问:
1、我装的是M7版本 是否有优化工具箱一说 是否要安装 2、我刚从书上打了个现成的程序 准备看看 可是结果如下: 程序:function xfminbnd clear all;clc x1=0;x2=100; [x,fval]=fminbnd(@ObjFunc,x1,x2); fprintf('\nResults:\n'),fprintf('Optimum solution:%f\n',x) fprintf('Objective value:%f',fval) %--------------------------- function f=ObjFunc(x) f=x^3+3*x^2-9*x; 其实就是解决0-100内但变量函数最小值 可运行结果是: ??? function xfminbnd | Error: Function definitions are not permitted at the prompt or in scripts. 希望高手给我指点 赫赫 或许这是个很弱质的问题 但也谢谢大家乐 顺便有关于非线性规划问题指导的旧更感谢了!!!! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2007-12-29
帖子: 7
声望力: 0 ![]() |
![]()
我也是低手,试着回答你的问题吧。
第一个问题:安装Matlab的时候就有机会选择安装它的哪些工具箱,其中就包括优化工具箱,英文是optimization toolbox。你做优化工作当然要选择这个安装这个工具箱,否则,许多函数根本就不存在,你在matlab中当然更无法使用。 第二个问题:不知道你是从哪里的书上拷的程序,反正在我看来问题是很多的,也许人家没有问题是我不懂吧。我觉得问题主要有这么几个: (一)看你的架势,程序的上半部分原本应该是个脚本文件的,可你却使用的是函数的定义方法,并且也还是错的!脚本文件无需你程序中的第一句;函数文件的定义方法是function [y1,y2,...]=funname(x1,x2,...)。你两头都没有靠上,程序当然无法正常运行。因为你使用了function关键字,语法却又不正确,matlab认为你是想定义函数,所以提示你函数不允许在命令行或脚本文件中定义。 (二)程序的后半部分应该单独存为一个函数文件的,文件名可以就叫objfunc.m,而不应该混在上面的脚本文件当中。 (三)你的fprintf弄了三句,其实没有什么必要,一句话就可以搞定的。如写成:fprintf('Results:\nOptimum solution:%f\nObjective value:%f\n',x,fval)。这么写可能看上去简洁些,不过不影响程序的正确性。 最后,建议你好好看一下函数文件与脚本文件的区别,以及函数文件的定义方法。 有说得不对的地方,请指正。 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2007-12-29
帖子: 7
声望力: 0 ![]() |
![]()
修改后的程序运行结果为:
x=1时,函数取得最小值,其值为-5。 |
![]() |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[MATLAB图像处理] 请教matlab中视频处理 | jcwnhy | MATLAB论坛 | 1 | 2010-05-04 19:18 |
[求助]matlab rgb图像滤波和robert、Laplacian锐化 | doudouzhjm | MATLAB论坛 | 0 | 2008-12-26 19:31 |
[求助]郑碧波翻译的揭秘第一章习题7的问题。 | sjzyanliang | MATLAB论坛 | 2 | 2008-12-11 14:56 |
[求助]如何在圆形区域中画三维曲线(曲面) | locksmith | MATLAB论坛 | 2 | 2008-12-11 11:47 |
[求助]MATLAB中的多维矩阵计算 | wd_hq4139 | MATLAB论坛 | 0 | 2008-12-11 01:24 |