紧急求助!关于符号变量的问题
子程序中要解出va,我要对va关于beta,gamma,c,r3,w,theta进行优化,可是于beta,gamma,c,r3,w,theta都是符号变量,如何是好? 原帖由 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 发表
我知道,可是我的变量还没有数值阿,我要用优化函数去优化阿
优化问题我不太懂,等其他高手(如xjzuo版主)路过吧 把符号函数转化成inline函数试试 也试过了,关键是我的变量是beta,gamma,c,r3,w,theta,可优化函数fmincon只能用向量x,请哪位高手调试下我的程序,多谢了 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
这是帮助上的例子,改了一下,不知是不是你的思路 好像还是有问题啊,
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')比如比这样更复杂的方程,只有现解现优化,
多谢了,不胜感激 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”出错呢? 原帖由 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 编辑 ] 这个错误我知道了,谢谢你的提醒。
正如我上面提到的,我要优化的函数 f 是一个关于其他参数的很复杂的方程,f 并没有显式的表达式,比如:'a*f+b+c*f^2=0',实际比这更复杂的方程,只有通过符号解“指令”solve先解出 f 来 。请问,如何在“myfun”实现编程,以便实现 f 是向量 x 的函数, 用向量 x 来替换其他参数如abc,最后优化 f 。
[ 本帖最后由 eight 于 2007-4-20 11:15 编辑 ]
页:
[1]