登录论坛

查看完整版本 : [求助]一个技术问题


xiaoyu
2008-04-26, 21:20
--------------------------------------------------------------------------------
我遇到一个这样的问题:
程序都是正确的,是从书上抄的,或是别人做过的,
function f=fconfun(x)
f=-x(1)*x(2)*x(3)
可是我一运行就出现这样的问题,
??? Input argument "x" is undefined.

Error in ==> fun at 2
f=-x(1)*x(2)*x(3);
只要运行function这样的程序就出现这个问题
希望大家帮忙!

shiqiang
2008-04-26, 21:35
这个程序本身没有问题,应该是你在调用的时候出问题了。调用的正确格式是fconfun([1 2 3])。并且保存在当前工作路径下文件命名为fconfun.m

xiaoyu
2008-04-27, 09:34
谢谢版主:
请教那以后我如果想调用类似的函数时,是不是应该考虑调用什么值啊?
像function f= myfun(x)
f=7.85*10^(-6)*pi*x(1)*x(2)*(1420+x(1))*(8350*x(3)^(-1)-1)

function[c,ceq]= mycon(x)
c(1)=210.2*x(3)+26.8*x(1)*x(2)-0.08*x(1)^3*x(2)-3994-((7.5+x(1))^2*(0.25*x(1)
^3*x(2)^3+1.5*10^8)*(x(1)*x(2)+852)^(-2));
ceq=[ ]
这个函数,我调用时又出现了上个问题,还不不太明白啊!

xiaoyu
2008-04-27, 09:52
function y=opt_fun1(x)
y=1000-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);
function [c,ceq]=opt_con1(x)
ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25; 8*x(1)+14*x(2)+7*x(3)-56];
c = [];
ff=optimset; ff.LargeScale='off'; ff.Display='iter';
ff.Tolfun=1e-30; ff.TolX=1e-15; ff.TolCon=1e-20;
x0=[1;1;1]; xm=[0;0;0]; xM=[]; A=[]; B=[]; Aeq=[]; Beq=[];
[x,f_opt,c,d]=fmincon('opt_fun1',x0,A,B,Aeq,Beq,xm,xM,'opt_con1',ff);
这个也是如此问题,怎么回事啊。求助一下

shiqiang
2008-04-27, 11:57
function[y1,y2,.....]=funname(x1,x2,.....)此类的函数,明白它的含义就会使用了,等号的左边是输出变量,等号的右边是输入的变量,如果你是调用此类函数,当然得了解这个函数有几个输入参量,然后按照固定格式(数量和顺序)调用此函数,才可以。