MATLAB中solve函数的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)的表达式复制了再运行,能得到结果
请问要怎样解决?
1、首先打开Matlab,直接在命令行输入solve函数,里面加上方程式,如下图所示,这里是一个二元一次方程。
2、接着直接回车就可以得到结果了,如下图所示。
3、然后solve函数中还可以写两个方程式,如下图所示。
4、回车后会得到两个未知数的解,如下图所示。
5、还可以先声明变量,然后编写方程式,并在solve中填入变量和方程式。
6、最后直接用点的方式得到答案即可,如下图所示。
参考技术A 这是由于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
查找自变量,比较有用 参考技术B 实际上 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]);
参考资料:百度
本回答被提问者采纳 参考技术C 这样用肯定是不行的可以这样用
syms
a
b
t=a+b
[a
b]=solve(t-4,'a-b=0')
注意t-4没有引号 参考技术D 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);
用Matlab的solve函数解方程组时如何限定某些参数为实数,某些参数为复数?使得对应的解只能为实数和复数?
我的意思是说使其在解出来的时候就是实数,而不是对解出来的复数取实部或虚部。
参考技术A real(ans)求结果实部,imag(ans)求结果虚部.以上是关于MATLAB中solve函数的问题的主要内容,如果未能解决你的问题,请参考以下文章