声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1034|回复: 10

[综合讨论] 紧急求助!关于符号变量的问题

[复制链接]
发表于 2007-4-19 16:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

vayouhua2.m

446 Bytes, 下载次数: 12

子程序

vamain.m

320 Bytes, 下载次数: 10

主程序

回复
分享到:

使用道具 举报

发表于 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 函数
 楼主| 发表于 2007-4-19 16:19 | 显示全部楼层
我知道,可是我的变量还没有数值阿,我要用优化函数去优化阿
发表于 2007-4-19 16:27 | 显示全部楼层
原帖由 jsp613 于 2007-4-19 16:19 发表
我知道,可是我的变量还没有数值阿,我要用优化函数去优化阿



优化问题我不太懂,等其他高手(如xjzuo版主)路过吧
发表于 2007-4-19 16:50 | 显示全部楼层
把符号函数转化成inline函数试试
 楼主| 发表于 2007-4-19 19:23 | 显示全部楼层
也试过了,关键是我的变量是beta,gamma,c,r3,w,theta,可优化函数fmincon只能用向量x,请哪位高手调试下我的程序,多谢了
发表于 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=[0;72];
[x,fval] = fmincon(@myfun,x0,A,b)
x =

   24.0000
   12.0000
   12.0000


fval =

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

评分

1

查看全部评分

 楼主| 发表于 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')比如比这样更复杂的方程,只有现解现优化,
多谢了,不胜感激
 楼主| 发表于 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”出错呢?
发表于 2007-4-20 10:27 | 显示全部楼层
原帖由 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)); ...



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


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

[ 本帖最后由 eight 于 2007-4-20 10:34 编辑 ]
 楼主| 发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-19 10:35 , Processed in 0.067635 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表