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、最后直接用点的方式得到答案即可,如下图所示。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-19
这是由于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
查找自变量,比较有用
第2个回答  推荐于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]);

参考资料:百度

本回答被提问者采纳
第3个回答  2019-01-05
这样用肯定是不行的
可以这样用
syms
a
b
t=a+b
[a
b]=solve(t-4,'a-b=0')
注意t-4没有引号
第4个回答  2019-10-27
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函数求非线性解方程或方程组
MATLAB的solve函数是一个强大的工具,用于处理各种代数方程和非线性方程的求解任务。它的使用方法包括但不限于:单变量方程求解通过以下步骤,我们可以使用solve函数来求解一个单变量方程:编写程序:[x, sol] = solve(equation, variable)运行结果:程序执行后,输出变量x的解sol方程组求解对于方程组,其...

MATLAB中solve函数的问题
1、首先打开Matlab,直接在命令行输入solve函数,里面加上方程式,如下图所示,这里是一个二元一次方程。2、接着直接回车就可以得到结果了,如下图所示。3、然后solve函数中还可以写两个方程式,如下图所示。4、回车后会得到两个未知数的解,如下图所示。5、还可以先声明变量,然后编写方程式,并在sol...

matlab中调用solve函数出错?怎么解决
程序不算长,但问题可不少:1、solve函数的这种调用方式:solve('lambda-(-2*log10(2.51\/Re\/sqrt(lambda)+0.27\/l(i)))^(-2) = 0','lambda')是把整个字符串作为参数传递给符号计算内核的,给参数l和Re赋值不起作用,所以在符号计算内核求解时会把l、Re也看成变量,从而导致求解失败。解决...

MATLAB | solve函数求解析解时不支持分段函数的解决方案
在MATLAB中,符号求解函数solve似乎不直接支持分段函数,这无疑是一个让人惊讶的局限。遇到这类问题,用户在处理多元方程组时,若遇到分段函数,如遇到 "if x>0" 这样的条件表达式,会遇到转换为逻辑表达式的难题。虽然数值解工具如vpasolve可以应对,但若坚持要寻求解析解,情况就变得复杂。尝试使用逻辑表...

matlab中调用solve函数出错?怎么解决
程序不算长,但问题可不少:1、solve函数的这种调用方式:solve('lambda-(-2*log10(2.51\/Re\/sqrt(lambda)+0.27\/l(i)))^(-2) = 0','lambda')是把整个字符串作为参数传递给符号计算内核的,给参数l和Re赋值不起作用,所以在符号计算内核求解时会把l、Re也看成变量,从而导致求解失败。解决...

matlab中如何根据函数值求自变量
在 MATLAB 环境中,我们可以通过利用 solve 函数来根据函数值求解自变量的值。以一元二次方程 y = x^2 + 5*x 在 y = 0 条件下的解为例,我们具体步骤如下。首先,在电脑上打开 MATLAB 软件,这里假设使用的是 MATLAB R2016a 版本。如果尚未安装 MATLAB,可通过网上下载。接着,在 MATLAB 的...

matlab的solve用法
Matlab中的solve函数主要针对的是代数方程的求解,尤其是多项式解,但对于非代数方程,如超越方程,其处理能力相对有限,只能给出特定的实数解。不过,solve并非仅限于此,它还能用于符号方程和方程组的求解,例如,你可以通过[x,y]=solve('x^2+y-6','y^2+x-6','x','y')来解一个方程组。在...

MATLAB solve解方程,已经赋值变量,结果仍然还有变量
出在问题原因有:1、声明变量错误,变量应该写所求的变量。正确的写法 syms S1 Sd Sdp;2、 solve 命令函数 书写错误(多了单引号)。正确的写法 [S1,Sd,Sdp]=solve(0.5744==log(1500)\/(log(1500)+S1),S1==Sdp+Sp,9==Sdp+3+Sd,'S1','Sd','Sdp')运行下列代码 >>syms S1 Sd Sdp;>...

matlab solve函数的问题
solve 函数默认的都把变量当作sym来运算 计算出来的结果都是sym对象。为什么呢?追去更高的准确度。譬如solve('x=32\/3')计算出来的是32\/3 而不是小数 sym对象计算出来的是一个表达式,而不是数值。如果您想要得到数值结果的话,再用一个函数eval即可 [x1,y1]=solve('(x-nodee(1,1))^2+(y...

MATLAB用solve解方程组后如何在程序中调用解的结果?
使用MATLAB的solve函数可以求解方程组,解的结果可以通过赋值给变量来保存。例如,假设我们有以下方程组:x + y = 52x - y = 1 我们可以使用solve函数求解:syms x y[x, y] = solve(x + y == 5, 2*x - y == 1);在程序中,我们可以通过变量x和y来调用解的结果。例如,我们可以将解...

相似回答