MATLAB中solve函数的问题

2024-10-31 16:48:09
推荐回答(5个)
回答1:

1、首先打开Matlab,直接在命令行输入solve函数,里面加上方程式,如下图所示,这里是一个二元一次方程。

2、接着直接回车就可以得到结果了,如下图所示。

3、然后solve函数中还可以写两个方程式,如下图所示。

4、回车后会得到两个未知数的解,如下图所示。

5、还可以先声明变量,然后编写方程式,并在solve中填入变量和方程式。

6、最后直接用点的方式得到答案即可,如下图所示。

回答2:

这是由于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
查找自变量,比较有用

回答3:

实际上 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]);

回答4:

这样用肯定是不行的
可以这样用
syms
a
b
t=a+b
[a
b]=solve(t-4,'a-b=0')
注意t-4没有引号

回答5:

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);