пример
Решение линейного уравнения в MATLAB

рисунок к задаче

Как пример рассмотрим задачу с лекции 1:
определение веса балки (Кепе - 1.2.3)

Задача 1. Определить вес балки AB, если известны силы натяжения тросов F1=120Н, F2=80H. Заданы углы a=45o, b=30o между вертикальной осью и тросами АС и BC соответственно.

В рамках решения использовалось условие равновесия сходящейся системы сил:
И для проекций всех сил на вертикальную ось было получено уравнение:

из которого выражается, и подставляя численные значения сил и углов численно определяется неизвестный вес балки (G).
Решение уравнения относительно неизвестной G с точки зрения математики, является аналитическим действием. (В данном случае достаточно просто перенести неизвестную в левую часть уравнения изменив знак).
Для понимания как написать код для задачи рассмотрим математические действия и инструментарий MATLAB позволяющих их реализовать:

a. преобразование уравнения – т.е. необходимо записать уравнение с использованием того инструментария MATLAB который позволит решить уравнение относительно переменной.

b. определение численных значений переменных – в условиях задачи силы и углы заданы, в коде они тоже должны быть.
код в MATLAB
  • секция 1
    Служебные команды для работы кода
    функции:
    clc % Очистка командного окна
    clear % Удаление всех элементов в рабочей области

    Команды из этой секции можно писать в начале каждого кода в live-скрипте, они нужны для того, чтобы перед компиляцией кода основной части скрипта все переменные и лишние данные от предыдущих компиляций были очищены, если это требуется. Эти команды не удаляют файлы, строки в скрипте.
  • секция 2
    Переменные для аналитических преобразований (неизвестные)
    функции:
    syms G

    Здесь задается переменная G – (неизвестный вес балки) в символьном виде. Для этого перед переменной записана функция syms – при использовании которой создаются символьные скалярные переменные и функции. Переменные в символьном формате в MATLAB имеют расширение sym, такой формат используется для аналитических преобразований.
  • секция 3
    Определение численных значений известных переменных
    функции:
    F1=120;
    F2=80;
    a=45;
    b=30;

    В третьей секции определяются численные значения известных сил и углов. F1, F2,a и b.

    При задании в таком виде переменных им будет присвоен формат double , для того чтобы не усложнять на данный момент материал, можно принять что это обычные числа.
    Точки с запятой в live-скрипте после строк не являются обязательным условием в данном случае они записаны для того, чтобы значения переменных не отображались в окно вывода.
  • секция 3
    Численное решение уравнения
    функции:
    Fy = F1*cosd(a)+F2*cosd(b)-G==0;
    G=vpasolve(Fy,G);

    В первой строке задано уравнение, оно присвоено переменной Fy, и далее записано с использованием знака == который в данном случае, означает аналитическое приравнивание левой и правой частей уравнения.
    Где левая часть соответственно: F1*cosd(a)+F2*cosd(b), а правая 0.

    Во второй строке секции переменной G присвоен результат функции vpasolve(eqn,var) – которая решает символьные уравнения числено.

    Для реализации функции vpasolve в качестве аргументов (в скобках) минимум нужно записать через запятую: - уравнение (eqn- англ. equation) и переменную (var- англ. variable), относительно которой и будет числено решено уравнение.

    В данном случае уравнение присвоено переменной Fy для упрощения понимания кода. Т.е. четвертую секцию можно было записать в виде:

    то же в одну строку

    G=vpasolve(F1*cosd(a)+F2*cosd(b)-G==0,G);

запуск код на выполнение

После компиляции (кнопка F5/кнопка RUN на панели - Live Editor) всех секций кода получим ответ
G = 154.1348460451707902

Количество символов в ответе можно настраивать с использованием функции digits(var) – где var – количество отображаемых символов в ответе. Например дописав в первую секцию строку digits(10) полученный ответ выглядел бы как:

G = 154.13484
Справка*

запись тригонометрических функций в MATLAB


В четвертой секции при записи проекций сил в уравнении можно увидеть использование функции cosd(var) которая возвращает значения косинуса угла в градусах. Это важно учитывать при работе в MATLAB, т.к. функция cos(var) (без буквы d) – вернет значение косинуса угла в радианах, что приведет к ошибке в ответе.

Справка*
Элементарные математические функции
Made on
Tilda