jsp613 发表于 2007-4-19 16:01

紧急求助!关于符号变量的问题

子程序中要解出va,我要对va关于beta,gamma,c,r3,w,theta进行优化,可是于beta,gamma,c,r3,w,theta都是符号变量,如何是好?

eight 发表于 2007-4-19 16:05

原帖由 jsp613 于 2007-4-19 16:01 发表
子程序中要解出va,我要对va关于beta,gamma,c,r3,w,theta进行优化,可是于beta,gamma,c,r3,w,theta都是符号变量,如何是好?


符号变量转换成数值型变量的问题请用 subs 函数

jsp613 发表于 2007-4-19 16:19

我知道,可是我的变量还没有数值阿,我要用优化函数去优化阿

eight 发表于 2007-4-19 16:27

原帖由 jsp613 于 2007-4-19 16:19 发表
我知道,可是我的变量还没有数值阿,我要用优化函数去优化阿


优化问题我不太懂,等其他高手(如xjzuo版主)路过吧

sffei 发表于 2007-4-19 16:50

把符号函数转化成inline函数试试

jsp613 发表于 2007-4-19 19:23

也试过了,关键是我的变量是beta,gamma,c,r3,w,theta,可优化函数fmincon只能用向量x,请哪位高手调试下我的程序,多谢了

sffei 发表于 2007-4-19 20:03

function f = myfun(x)
a=sym(x(1));b=sym(x(2));c=sym(x(3));
f = -a * b * c;
f=subs(f);
>>A=[-1 -2 -2;1 2 2];b=;
= fmincon(@myfun,x0,A,b)
x =

   24.0000
   12.0000
   12.0000


fval =

-3.4560e+003
这是帮助上的例子,改了一下,不知是不是你的思路

jsp613 发表于 2007-4-19 22:30

好像还是有问题啊,
function f = myfun(x)
a=sym(x(1));b=sym(x(2));c=sym(x(3));
f = -a * b * c;   在我的程序里,f关于abc的函数要先求出来,并没有现成的表达式阿,
                         否则何苦费折腾
f=subs(f);
solve('a*f+b+c*f^2=0','f')比如比这样更复杂的方程,只有现解现优化,
多谢了,不胜感激

jsp613 发表于 2007-4-20 10:26

function f = myfun(x)
a=sym(x(1));b=sym(x(2));c=sym(x(3));
f = -a * b * c;
为什么执行这个程序时,出错,提示如下:
??? Input argument "x" is undefined.

Error in ==> myfun at 2
a=sym(x(1));b=sym(x(2));c=sym(x(3));

而当执行主程序优化 f 时需要调用 f 却没有错误,为什么单独执行“myfun”出错呢?

eight 发表于 2007-4-20 10:27

原帖由 jsp613 于 2007-4-20 10:26 发表 http://forum.vibunion.com/forum/images/common/back.gif
function f = myfun(x)
a=sym(x(1));b=sym(x(2));c=sym(x(3));
f = -a * b * c;
为什么执行这个程序时,出错,提示如下:
??? Input argument "x" is undefined.

Error in ==> myfun at 2
a=sym(x(1)); ...


你直接在编辑框口用 Run 吗?那么matlab如何知道你的 x 是实际值是什么?


请参阅精华贴:写给学习matlab的新手们

[ 本帖最后由 eight 于 2007-4-20 10:34 编辑 ]

jsp613 发表于 2007-4-20 11:13

这个错误我知道了,谢谢你的提醒。
正如我上面提到的,我要优化的函数 f 是一个关于其他参数的很复杂的方程,f 并没有显式的表达式,比如:'a*f+b+c*f^2=0',实际比这更复杂的方程,只有通过符号解“指令”solve先解出 f 来 。请问,如何在“myfun”实现编程,以便实现 f 是向量 x 的函数, 用向量 x 来替换其他参数如abc,最后优化 f 。

[ 本帖最后由 eight 于 2007-4-20 11:15 编辑 ]
页: [1]
查看完整版本: 紧急求助!关于符号变量的问题