Лекция 4
Решение уравнений, дифференцирование, интегрирование в MATLAB, численно и аналитически.

Работа с формулами в MATLAB: оператор syms

1. Базовое использование
Объявление символьных переменных:
syms x
syms y z
syms t real % объявление вещественной переменной

2. Создание математических выражений
% Простые выражения
f = x^2 + 3*x + 2
g = sin(x) + cos(x)
% Более сложные выражения
h = (x^2 + 1)/(x - 1) k = exp(-x)*sin(x)

3. Основные операции
Алгебраические операции:
% Сложение
f + g
%Умножение
f * g
%Деление
f / g
% Возведение в степень
f^2 4.

Преобразование выражений
Упрощение:
simplify(f)
expand(f)
factor(f)

Замена переменных:
subs(f, x, 2) % замена x на 2
subs(f, x, y) % замена x на y

5. Дифференцирование и интегрирование
Дифференцирование:diff(f, x) % производная по x
diff(f, x, 2) % вторая производная

Интегрирование:
int(f, x) % неопределенный интеграл
int(f, x, 0, 1) % определенный интеграл

6. Решение уравнений
syms x eqn = x^2 - 4 == 0
sol = solve(eqn, x)
7. Манипуляции с выражениями
Создание систем уравнений:
syms x y
eq1 = x + y == 1
eq2 = x - y == 2
sol = solve([eq1, eq2], [x, y])

решение уравнений (систем уравнений) в MATLAB


1. solve()
  • Назначение: Решение символьных уравнений и систем
  • Применение: Аналитическое решение уравнений
Пример:
syms x eqn = x^2 - 4 == 0;
sol = solve(eqn, x);

2. vpasolve()
  • Назначение: Численное решение символьных уравнений
  • Применение: Когда аналитическое решение получить сложно или невозможно
Пример:
syms x eqn = sin(x) == x^2 - 1;
sol = vpasolve(eqn, x);

3. linsolve()
  • Назначение: Решение систем линейных уравнений
  • Применение: Только для линейных систем
Пример:
A = 1 2; 3 4; B = 5; 6; X = linsolve(A, B);

4. fsolve()
  • Назначение: Численное решение нелинейных уравнений
  • Применение: Для систем нелинейных уравнений
Пример:
fun = @(x) [x(1)^2 + x(2)^2 - 1;
x(1) - x(2)^2];
x0 = 0; 0; sol = fsolve(fun, x0);

Функция subs в MATLAB используется для замены переменных в символьных выражениях.

Базовое использование

result = subs(expr, oldVar, newVar)

Где:

expr - символьное выражение
oldVar - переменная, которую нужно заменить
newVar - новое значение или выражение
Примеры использования
Замена одной переменной:
syms x
f =  3*x + 5;
result = subs(f, x, 2);  % Результат будет 11


Замена нескольких переменных:
syms x y
f = x^2 + y^2;
result = subs(f, {x, y}, {1, 2});  % Результат будет 5

Работа с матрицами:


syms a b c
M = [a, b; c, a + b];
result = subs(M, a, 1);

В MATLAB существует два основных способа дифференцирования функций:


  1. Аналитическое дифференцирование:
  • Используется функция diff()
Необходимо создать символьное выражение с помощью syms - для переменной по которой будет браться производная
Результат сохраняется в символьном виде
syms a x
f = sin(a*x)
diff(f)        % производная по x
diff(f,a)      % производная по a
diff(f,x,2)    % вторая производная по x
  1. Численное дифференцирование:
Основано на методе конечных разностей

  • Основные функции:
  • diff(X) - первые разности для вектора или матрицы
  • diff(X,n) - разности n-го порядка
  • diff(X,n,dim) - разности n-го порядка по указанному измерению
X = [1 2 4 7 11]
diff(X)        % [1 2 3 4]
Пример численного дифференцирования методом разностей "вручную"

Особенности применения:

  • Аналитическое дифференцирование подходит для получения точных формул
  • Численное дифференцирование используется для работы с дискретными данными
  • При численном дифференцировании важно учитывать погрешность вычислений
  • Для функций нескольких переменных можно комбинировать оба подхода
При работе с аналитическим дифференцированием рекомендуется:
  1. Всегда использовать syms для создания символьных переменных
  2. Указывать переменную дифференцирования явно
  3. Для сложных функций разбивать задачу на части
При численном дифференцировании важно:
  1. Выбирать оптимальный шаг дискретизации
  2. Учитывать возможные погрешности вычислений
  3. Проверять корректность результатов на простых примерах

Интегрирование в MATLAB

Функция int()
Базовое использование:
% Неопределенный интеграл
syms x f = x^2;
F = int(f, x)

% Определенный интеграл
a = 0;
b = 1;
I = int(f, x, a, b)

Основные возможности:
  • Вычисление неопределенных интегралов
  • Вычисление определенных интегралов
  • Работа с символьными выражениями
  • Возможность указания переменной интегрирования
2. Функция vpaintegral()

Базовое использование:
syms u
f = besseli(5,25*u).*exp(-u*25);
result = vpaintegral(f, 0, 30)

Особенности:
  • Использует арифметику переменной точности
  • Применяется для численного интегрирования высокой точности
  • Эффективна для сложных функций
  • Может справиться с задачами, где integral() возвращает NaN

Численные методы интегрирования

1. Метод трапеций (Trapezoidal Rule)
  • Описание: Использует трапеции для аппроксимации площади под кривой
  • Формула: ∫f(x)dx ≈ h/2[f(a) + 2∑f(xᵢ) + f(b)]
Функция MATLAB: trapz

2. Метод трех восьмых (Three-Eighths Rule)
  • Описание: Использует кусочные полиномы третьей степени
Функция MATLAB: quad (адаптивная квадратура Симпсона)

3. Метод Монте-Карло
  • Описание: Использует случайные выборки для аппроксимации интеграла
  • Принцип: Среднее значение функции умножается на область интегрирования
Функция MATLAB: integral с опцией Monte Carlo

4. Формула Гаусса (Gaussian Quadrature)
  • Описание: Использует специальные узлы и веса для высокой точности
Функция MATLAB: quadgk


примеры


Пример 1: Метод трапеций
% Пример использования
trapz x = 0:0.1:1;
y = exp(x);
result = trapz(x, y)

Пример 2:
Метод трех восьмых%
Использование
quad f = @(x) exp(-x.^2);
result = quad(f, 0, 1)

Пример 3: Метод Монте-Карло
% Простой пример Монте-Карло
f = @(x) sin(x); n = 10000; x = rand(1, n)*pi; result = (pi/n)*sum(f(x))

Пример 4: Формула Гаусса
% Использование quadgk
f = @(x) exp(-x.^2);
result = quadgk(f, 0, 1)
Задание
  • балл: -
    часть А: Заданы интегралы варианты смотри пособие (стр. 117)
    описание:
    1. Вычислить приближенное значение определенного интеграла указанными методомами и вычислить определенный интеграл с помощью встроенных функций matlab. сравнить полученные значения
  • балл: -
    часть B: заданы уравнения движения точки на плоскости
    описание:
    1. Вычислить скорость, ускорение точки, радиус кривизны траектории
    2. Построить в одном графическом окне графики: ускорения; скорости точки; и том же графическом окне в одних графических осях траекторию движения точки двумя способами (по законам движения x(t) y(t) и по уравнению траектории y(x)) - графики должны совпадать
дополнения:

как записать в матлаб различные математические выражения:


математическая запись в MATLAB: sqrt(4) или 4^(1/2)


математическая запись в MATLAB: 24^(1/5)


математическая запись в MATLAB: cos(6*t).^2


математическая запись в MATLAB: exp(5/4) - в скобках показатель степени экспоненты

Made on
Tilda