matlab中符号变量的设置

我想问一下,symsabpositive,a和b全是正的吗?如果我只想声明b是正数怎么办呢?如果我一开始symsab,经过一系列操作后,再声明symsbpositive有... 我想问一下,syms a b positive,a和b全是正的吗?如果我只想声明b是正数怎么办呢?如果我一开始
syms a b,经过一系列操作后,再声明syms b positive有效吗?如果我想声明b>=0怎么办呢?谢谢!
展开
 我来答
tianxiawulang
2013-08-16 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2611万
展开全部

1、syms命令是创建多个符号变量的简捷写法,

syms a b positive

相当于

a = sym('a','positive');
b = sym('b','positive');

所以,这种写法,a和b都是正的。

 

2、如果只想声明b是正数,那就考虑分开写:

syms a
syms b positive

但是,如果先syms a b,经过一系列操作后,再声明syms b positive,也是有效的(但很显然只对声明为正之后的操作有效)。下面是一个例子:

>> syms b
>> Dt=sym('Dirac(t-b)') 
Dt = 
Dirac(t-b)
 
>> laplace(Dt) 
ans = 
laplace(Dirac(-t+b),t,s)
 
>> syms b positive
>> laplace(Dt) 
ans = 
exp(-b*s)

值得特别指出的是,clear b并不会清除b的positive属性,例如在上面的代码后面,如果再进行下面的操作:

>> clear b
>> laplace(Dt) 
ans = 
exp(-b*s)
 
>> syms b real
>> laplace(Dt) 
ans = 
exp(-s*b)-exp(-s*b)*Heaviside(-b)
 
>> syms b unreal
>> laplace(Dt) 
ans = 
laplace(Dirac(-t+b),t,s)

也就是说,除非用命令改变b的属性(或者用clear mex或clear all之类的做法强制重启符号计算内核),前面声明的positive或real属性会一直有效。

 

3、2011b之前的MATLAB,对符号变量的限定只有三种选择:复数(unreal,默认),实数(real),或者正数(positive),因而无法实现你希望b>=0的要求。2012a引入了三个函数:assume、assumeAlso和assumptions,可以对符号变量属性进行更多的限定,可以实现你的上述要求。更详细的信息请查阅这几个函数的文档。

 

4、据我所知,evalin用于指定在特定工作区内执行指定的命令(主要的作用在于从函数中访问基本工作区),像楼上所说的借助它对符号变量“进行更细腻的操作”则是闻所未闻。

 

希望对楼主有帮助,有问题可追问。

make1573
2013-08-15 · TA获得超过2075个赞
知道小有建树答主
回答量:535
采纳率:71%
帮助的人:150万
展开全部
syms a b positive
a b 全是整数
再声明有效
syms或者sym只能声明三种:复数、实数、整数,
不然只能借助evalin指令进行更细腻的操作
更多追问追答
追问
能为我演示一下使用evalin来把b的范围限定在>=0(不一定是整数)吗?
追答
刚才打错字了,应该是正数
evalin资料很少,我也不会,只是看书上面说用evalin,抱歉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式