为什么下面的MATLAB计算时不能直接把表达式带入?求大神指教

>>symsx>>y=16*x-48;>>x=solve('abs(y)=1')%为什么这里直接用y代替表达式得到的结果不正确x=1-1>>x=solve('abs(16... >> syms x
>> y=16*x-48;
>> x=solve('abs(y)=1')%为什么这里直接用y代替表达式得到的结果不正确
x =
1
-1
>> x=solve('abs(16*x-48)=1')
x =
49/16
47/16
另外,括号里面的表达式为什么要加单引号,MATLAB究竟什么时候用字符串什么时候用符号变量(初学,已被单引号整晕。。)
展开
 我来答
tianxiawulang
2015-08-24 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2653万
展开全部

单引号里面表示字符串,solve函数对于字符串会自动转换为符号量,例如

>> x=solve('abs(16*x-48)=1')

x =

[ 49/16]
[ 47/16]

类似的

>> x=solve('abs(y)=1')

x =

[  1]
[ -1]

这里需要注意,传递给solve函数的只是一个字符串【'abs(y)=1'】,在这个字符串里面MATLAB会自动查找作为变量使用的符号,也就是y,但这个y和你之前赋值的变量【y=16*x-48】没有任何关系,用句时髦的话说,不在一个次元。

 

要想让这个y与之前赋值的量发生关联,就应该使用变量,例如

>> syms x
>> y=16*x-48;
>> x=solve(abs(y)-1)

x =

[ 49/16]
[ 47/16]

注意,这里的方程不能写成带等号的形式,只能是f=0的形式,求解用solve(f)。

追问
啊   感觉明白点了  太感谢了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式