为什么下面的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究竟什么时候用字符串什么时候用符号变量(初学,已被单引号整晕。。) 展开
>> 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究竟什么时候用字符串什么时候用符号变量(初学,已被单引号整晕。。) 展开
1个回答
展开全部
单引号里面表示字符串,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)。
追问
啊 感觉明白点了 太感谢了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询