English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
До сих пор мы видели, что все примеры можно выполнить в MATLAB и GNU (известный также как Octave). Однако, для решения базовых алгебраических уравнений MATLAB и Octave практически не имеют различий, поэтому мы постараемся представить MATLAB и Octave в отдельной части.
Мы также рассмотрим разложение и упрощение алгебраических выражений.
solveФункция используется для решения алгебраических уравнений. Самый простой случай - функция solve использует уравнение, заключенное в кавычки, в качестве параметра.
Например, давайте решим уравнение x-5 = 0 для x
solve('x-5=0')
MATLAB выполнит следующие команды и вернёт следующий результат-
ans = 5
Вы также можете вызывать функцию Solve
y = solve('x-5 = 0')
MATLAB выполнит следующие команды и вернёт следующий результат-
y = 5
Вы даже можете не включать правую часть уравнения-
solve('x-5')
MATLAB выполнит следующие команды и вернёт следующий результат-
ans = 5
Если уравнение содержит несколько символов, по умолчанию MATLAB предполагает, что вы решаете уравнение для x, но функция solve имеет и другую форму-
solve(equation, variable)
Здесь вы также можете упомянуть переменные.
Например, давайте решим уравнение v - u - 3t 2 =0. В этом случае我们应该 написать-
solve('v-u-3*t^2=0', 'v')
MATLAB выполнит следующие команды и вернёт следующий результат-
ans = 3*t^2 + u
rootsФункция используется для решения алгебраических уравнений в Octave. Вы можете написать следующий пример, например:
Например, давайте решим уравнение x-5 = 0 для x
roots([1, -5])
Octave выполнит следующие команды и вернёт следующий результат-
ans = 5
Вы также можете вызывать функцию Solve
y = roots([1, -5])
Octave выполнит следующие команды и вернёт следующий результат-
y = 5
solveФункция также может решать уравнения высокого порядка. Обычно она используется для решения квадратных уравнений. Функция возвращает корни уравнения в виде массива.
Следующий пример решает квадратное уравнение x 2 -7x +12 =0. Создайте скриптовый файл и введите следующий код-
eq = 'x^2 -7*x + 12 = 0'; s = solve(eq); disp('Первый корень:'), disp(s(1)); disp('Второй корень:'), disp(s(2));
При запуске файла он показывает следующий результат-
Первый корень: 3 Второй корень: 4
Ниже приведён пример решения квадратного уравнения x 2 -7x +12 = 0. Создайте скриптовый файл и введите следующий код-
s = roots([1, -7, 12]); disp('Первый корень:'), disp(s(1)); disp('Второй корень:'), disp(s(2));
При запуске файла он показывает следующий результат-
Первый корень: 4 Второй корень: 3
solveФункция также может решать уравнения высокого порядка. Например, давайте решим трёхчленное уравнение (x-3)2(x-7)= 0
solve('(x-3)^2*(x-7)=0')
MATLAB выполнит следующие команды и вернёт следующий результат-
ans = 3 3 7
Для высоких порядков уравнений длина корня содержит множество членов. Вы можете получить числовое значение такого корня, преобразовав его в double. Следующий пример решает уравнение четвёртой степени x 4 -7x 3 +3x 2 -5x + 9 = 0。
Создайте сценарий файла и введите следующий код-
eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0'; s = solve(eq); disp('Первый корень:'), disp(s(1)); disp('Второй корень:'), disp(s(2)); disp('Третий корень:'), disp(s(3)); disp('Четвертый корень:'), disp(s(4)); %Преобразование корней в тип double disp('Числовое значение первого корня'), disp(double(s(1))); disp('Числовое значение второго корня'), disp(double(s(2))); disp('Числовое значение третьего корня'), disp(double(s(3))); disp('Числовое значение четвертого корня'), disp(double(s(4)));
При запуске файла он возвращает следующие результаты-
Первый корень: 6.630396332390718431485053218985 Второй корень: 1.0597804633025896291682772499885 Третий корень: -0.34508839784665403032666523448675 - 1.0778362954630176596831109269793i Четвертый корень: -0.34508839784665403032666523448675 + 1.0778362954630176596831109269793i Числовое значение первого корня 6.6304 Числовое значение второго корня 1.0598 Числовое значение третьего корня -0.3451 - 1.0778i Числовое значение четвертого корня -0.3451 + 1.0778i
Обратите внимание, что последние два корня являются комплексными.
Данный пример решает четырехчленное уравнение x 4 -7x 3 +3x 2 -5x + 9 = 0。
Создайте сценарий файла и введите следующий код-
v = [1, -7, 3, -5, 9]; s = roots(v); %Преобразование корней в тип double disp('Числовое значение первого корня'), disp(double(s(1))); disp('Числовое значение второго корня'), disp(double(s(2))); disp('Числовое значение третьего корня'), disp(double(s(3))); disp('Числовое значение четвертого корня'), disp(double(s(4)));
При запуске файла он возвращает следующие результаты-
Числовое значение первого корня 6.6304 Числовое значение второго корня -0.34509 + 1.07784i Числовое значение третьего корня -0.34509 - 1.07784i Числовое значение четвертого корня 1.0598
solveФункция также может использоваться для генерации решений систем уравнений, включающих несколько переменных. Давайте рассмотрим простой пример для демонстрации этого использования.
让我们求解方程式-
5x + 9y = 5
3x – 6y = 4
Создайте сценарий файла и введите следующий код-
s = solve('5*x + 9*y = 5','3*x - 6*y = 4'); s.x s.y
При запуске файла он показывает следующий результат-
ans = 22/19 ans = -5/57
同样,您可以求解更大的线性系统。考虑以下一组方程式-
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
我们有一些不同的方法来求解n个未知数中的n个线性方程组。让我们举一个简单的实例来演示这种用法。
让我们求解方程式-
5x + 9y = 5
3x – 6y = 4
这样的线性方程组可以写成单矩阵方程Ax = b,其中A是系数矩阵,b是包含线性方程右侧的列向量,x是表示解的列向量,如下所示:在下面的程序中显示-
Создайте сценарий файла и введите следующий код-
A = [5, \t 9; 3, -6]; b = [5;4]; A \ b
При запуске файла он показывает следующий результат-
ans = 1.157895 -0.087719
同样,您可以解决较大的线性系统,如下所示-
x + 3y -2z = 5
3x + 5y + 6z = 7
2x + 4y + 3z = 8
expand和collect分别用来展开和收集一个方程。以下示例演示了概念-
当使用许多符号函数时,应声明变量是符号性的。
Создайте сценарий файла и введите следующий код-
syms x % 符号变量x syms y % 符号变量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
您需要拥有一个symbolic软件包,该软件包分别提供expand和collect函数来扩展和收集方程式。以下示例演示了概念-
当使用许多符号函数时,应声明变量是符号变量,但是Octave定义符号变量的方法不同。注意使用Sin和Cos,它们也在符号包中定义。
Создайте сценарий файла и введите следующий код-
% 首先,加载包,确保它已安装。 pkg load symbolic % 使symbols模块可用 symbols % 定义符号变量 x = sym ('x'); y = sym ('y'); z = sym ('z'); %Расширение уравнения 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), z) collect(x^4*(x-3)*(x-5), z)
При запуске файла он показывает следующий результат-
ans = -45.0+x^2+(4.0)*x ans = 210.0+x^4-(43.0)*x^2+x^3+(23.0)*x ans = sin((2.0)*x) ans = cos(y+x) ans = x^(3.0)*(-7.0+x) ans = (-3.0+x)*x^(4.0)*(-5.0+x)
factorФункция разлагает выражение наsimplifyФункция упрощает выражение. Следующие примеры демонстрируют концепцию-
Создайте сценарий файла и введите следующий код-
syms x syms y factor(x^3 - y^3) factor([x^2-y^2,x^3+y^3]) simplify((x^4-16)/(x^2-4))
При запуске файла он показывает следующий результат-
ans = (x - y)*(x^2 + x*y + y^2) ans = [ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2) ] ans = x^2 + 4