在MATLAB解决基本的代数方程组
MATLAB 中使用 solve 命令求解代数方程组。在其最简单的形式,solve 函数需要括在引号作为参数方程。
例如,让我们在方程求解 x, x-5 = 0
y = solve('x-5 = 0')
返回结果:
y =
5
然而,如果公式涉及多个符号,那么MATLAB默认情况下,假定正在解决 x,解决命令具有另一种形式:
solve(equation, variable)
在那里,还可以提到的变量。
例如,让我们来解决方程 v – u – 3t2 = 0, 或 v 在这种情况下,我们应该这样写:
solve('v-u-3*t^2=0', 'v')
运行结果:
ans =
3*t^2 + u
在MATLAB中解决二次方程
solve 命令也可以解决高阶方程。它经常被用来求解二次方程,该函数返回在数组中的方程的根。
下面举例子解决二次方程 x^2-8x+12=0。
clear,clc
last=solve('x^2-8*x+12=0');
disp('The first root is: '), disp(last(1));
disp('The second root is: '), disp(last(2));
运行结果:
The first root is:
2
The second root is:
6
在MATLAB解高阶方程
solve 命令还可以解决高阶方程。例如,让我们来解决一个三次方程 (x-3)^2*(x-7) = 0
clear,clc
md='(x-3)^2*(x-7)=0';
o=solve(md);
disp('The first root is: '), disp(o(1));
disp('The second root is: '),disp(o(2));
disp('The third root is: '), disp(o(3));
输出结果:
The first root is:
3
The second root is:
3
The third root is:
7
在高阶方程的情况下,根长含有许多术语。可以得到的数值如根,把它们转换成一倍。
下面的例子解决了四阶方程 x4 − 7x3 + 3x2 − 5x + 9 = 0.
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';
s = solve(eq);
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));
The first root is:
-137/397 - 817/758i
The second root is:
-137/397 + 817/758i
The third root is:
2606/2459
The fourth root is:
3839/579
在MATLAB中求解方程组
solve 命令也可以用于生成涉及一个以上的变量的方程系统的解决方案。我们求解方程:
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
clear,clc
s = solve('x+3*y-2*z=5','3*x+5*y+6*z=7','2*x+4*y+3*z=8');
s.x
s.y
s.z
ans =
-15
ans =
8
ans =
2
MATLAB扩大和收集方程
MATLAB中 expand 和 collect 命令用于扩展,并分别收集一个方程。下面的示例演示的概念:
当工作中有许多象征性的函数,你应当声明你的变量是象征意义的。
syms x
syms y
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))
ans =
x^2 + 4*x - 45
ans =
x^4 + x^3 - 43*x^2 + 23*x + 210
ans =
2*cos(x)*sin(x)
ans =
cos(x)*cos(y) - sin(x)*sin(y)
ans =
x^4 - 7*x^3
ans =
x^6 - 8*x^5 + 15*x^4