jsp613 发表于 2007-5-11 16:29

求助关于sym的问题

子程序
function va=vayouhua(x)
%syms beta gamma r3 c w theta
%beta=x(1);gamma=x(2);r3=x(3);c=x(4);w=x(5);theta=x(6);
va1=solve('(3*beta*(1-beta)*gamma^2*((r3-c*gamma)*w*r3*sin(theta)-va*r3*cos(theta))*(w*r3*sin(theta)-va*cos(theta))*cos(theta))/((1-beta)*((r3-c*gamma)*w*r3*sin(theta)-va*r3*cos(theta))+beta*r3*(1+gamma)^3*(w*r3*sin(theta)-va*cos(theta)))*(r3-c-c*gamma)-((1-beta)*(r3-c*gamma))/(c*(1+gamma))*va-beta*va=0','va');
%此处先解出va1的表达式而已
beta=sym(x(1));gamma=sym(x(2));r3=sym(x(3));c=sym(x(4));w=sym(x(5));theta=sym(x(6));
vaa=va1(1);
va=subs(vaa);
主程序
%main function
function vamain
clear all
clc
x0=;%定义初始点
lb=;%设置上边界
ub=;%设置下边界
options=optimset('largescale','off');
=fmincon(@vayouhua,x0,[],[],[],[],lb,ub,[],options)   

出错提示:
??? Conversion to double from sym is not possible.
Error in ==> finitedifferences at 171
      gradf(gcnt,1) =(fplus-fCurrent)/CHG(gcnt);
Error in ==> optim\private\nlconst at 269
         =finitedifferences(XOUT,x,funfcn,confcn,lb,ub,f,nc, ...
Error in ==> fmincon at 498
   =...
Error in ==> vamain at 9
=fmincon(@vayouhua,x0,[],[],[],[],lb,ub,[],optios)      
什么原因,恳请高手调试,运行很快的
如果在另一个程序中先解出va1的表达式,把结果直接贴在子程序中而不是在子程序计算va1的表达式,程序没有错误,因此如何解决这个矛盾?或者有没有方法在子程序中调用计算va1的程序,这样也可以解决矛盾,如何调用?

xjzuo 发表于 2007-5-11 22:27

这个问题用1stOpt来解可能更合适.
我以前好象算过一个类似的问题,现在一时没找到程序放哪儿了.

jsp613 发表于 2007-5-12 10:21

请你再想想,1stOpt是什么东西

eight 发表于 2007-5-12 10:22

原帖由 jsp613 于 2007-5-12 10:21 发表 http://forum.vibunion.com/forum/images/common/back.gif
请你再想想,1stOpt是什么东西

请发贴前搜索一下论坛,就搜索 1stOpt 这个,然后就可以知道答案了,用不着发帖的

jsp613 发表于 2007-5-12 10:26

这个软件没用过,呵呵
页: [1]
查看完整版本: 求助关于sym的问题