MATLAB中solve函数的问题
先看一下:>>NodeENodeE=-201294>>distancedistance=22.652513.4046NodeE和distance都是有值的,但我用solv...
先看一下:
>> 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)的表达式复制了再运行,能得到结果
请问要怎样解决? 展开
展开全部
这是由于matlab里面有个关于默认自变量规定问题
一般情况下默认自变量为表达式中距离x最近的字母
你可以用这种方法来求解
[x0]=solve('2600*(z0+15)=(z0-24985)*x1')
[z0]=solve('2600*(z0+15)=(z0-24985)*x1')
由于上两行行中只有X1与z0两个变量,而且X1与X较近,所以是求解x1
为了求解z0,可以用
[z0]=solve('2600*(z0+15)=(z0-24985)*x1','z0')
这样的话就没问题了
建议你指定代求变量
相关函数
findsym
查找自变量,比较有用
一般情况下默认自变量为表达式中距离x最近的字母
你可以用这种方法来求解
[x0]=solve('2600*(z0+15)=(z0-24985)*x1')
[z0]=solve('2600*(z0+15)=(z0-24985)*x1')
由于上两行行中只有X1与z0两个变量,而且X1与X较近,所以是求解x1
为了求解z0,可以用
[z0]=solve('2600*(z0+15)=(z0-24985)*x1','z0')
这样的话就没问题了
建议你指定代求变量
相关函数
findsym
查找自变量,比较有用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2017-11-23
展开全部
实际上 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]);
参考资料: 百度
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样用肯定是不行的
可以这样用
syms
a
b
t=a+b
[a
b]=solve(t-4,'a-b=0')
注意t-4没有引号
可以这样用
syms
a
b
t=a+b
[a
b]=solve(t-4,'a-b=0')
注意t-4没有引号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
function
[x0,y0]=sss(a,b,c)
if
nargin
<1
a=0.26;
b=0.02;
c=0.15;
end
syms
x;
syms
y;
temp1=(x-a)^2+(y-b)^2-c^2;
temp2=1+y^1.5-x;
[x0,y0]=solve(temp1,temp2);
x0=eval(x0);
y0=eval(y0);
[x0,y0]=sss(a,b,c)
if
nargin
<1
a=0.26;
b=0.02;
c=0.15;
end
syms
x;
syms
y;
temp1=(x-a)^2+(y-b)^2-c^2;
temp2=1+y^1.5-x;
[x0,y0]=solve(temp1,temp2);
x0=eval(x0);
y0=eval(y0);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询