MATLAB中solve函数的问题
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 13:43:04
MATLAB中solve函数的问题
>> NodeE
NodeE =
-20 12
9 4
>> distance
distance =
22.6525 13.4046
NodeE 和distance都是有值的,但我用solve函数解包括NodeE和distance的方程结时,却被看成是符号了,导致x1,y1等于一连串的表达式
>> [x1,y1]=solve('(x-NodeE(1,1))^2+(y-NodeE(2,1))^2=distance(1)^2','(x-NodeE(1,2))^2+(y-NodeE(2,2))^2=distance(2)^2','x,y')%这里NodeE被全看成符号了!
但是,把x1(1)的表达式复制了再运行,能得到结果
请问要怎样解决?
>> NodeE
NodeE =
-20 12
9 4
>> distance
distance =
22.6525 13.4046
NodeE 和distance都是有值的,但我用solve函数解包括NodeE和distance的方程结时,却被看成是符号了,导致x1,y1等于一连串的表达式
>> [x1,y1]=solve('(x-NodeE(1,1))^2+(y-NodeE(2,1))^2=distance(1)^2','(x-NodeE(1,2))^2+(y-NodeE(2,2))^2=distance(2)^2','x,y')%这里NodeE被全看成符号了!
但是,把x1(1)的表达式复制了再运行,能得到结果
请问要怎样解决?
实际上 solve 函数默认的都把变量当作sym来运算
计算出来的结果都是sym对象.
为什么呢?追去更高的准确度.
譬如solve('x=32/3')计算出来的是32/3 而不是小数
sym对象计算出来的是一个表达式,而不是数值.
如果您想要得到数值结果的话,再用一个函数eval即可
[x1,y1]=solve('(x-NodeE(1,1))^2+(y-NodeE(2,1))^2=distance(1)^2','(x-NodeE(1,2))^2+(y-NodeE(2,2))^2=distance(2)^2','x,y');
x1=eval([x1]);
y1=eval([y1]);
计算出来的结果都是sym对象.
为什么呢?追去更高的准确度.
譬如solve('x=32/3')计算出来的是32/3 而不是小数
sym对象计算出来的是一个表达式,而不是数值.
如果您想要得到数值结果的话,再用一个函数eval即可
[x1,y1]=solve('(x-NodeE(1,1))^2+(y-NodeE(2,1))^2=distance(1)^2','(x-NodeE(1,2))^2+(y-NodeE(2,2))^2=distance(2)^2','x,y');
x1=eval([x1]);
y1=eval([y1]);