Задать вопрос
Pakonigoosy
@Pakonigoosy
Разработчик ПО

Почему Octave очень долго выполняет простой код?

Работаю в GNU Octave
Есть следующий код -
Определение переменных:
%% ЗАДАНИЕ С4
% Определение символьных переменных
syms Ra Rb Rc D11 D12 D21 D22 D31 D32 Re Rf;

%Определние известных сил и моментов
P1 = [-12*sqrt(2), -12*sqrt(2), 0]
P2 = [8, 0, 0]
Q = [0, -1.2*4, 0]
M1 = -32

%Определение точек
A = [0, 0, 0]
B = [4, 0, 0]
C = [8, 0, 0]
D = [4, 4, 0]
E = [0, 4, 0]
F = [8, 4, 0]

%Определение точек приложения известных сил
rP1 = D
rP2 = [4, 2, 0]
rQ = [2, 4, 0]


Далее я составляю некоторые уравнения. Вот первая группа уравнений:
eq11 = D11
eq12 = Re + D12 + Q(2)
eq13 = cross(E-D, [0, Re, 0]) + cross(rQ-D, Q)
eqs = [eq11, eq12, eq13]

Этот код работает нормально
Далее пытаюсь сделать аналогично, но для другой системы:
eq21 = D21
eq22 = D22 + Rf
eq23 = M1 + cross(F-D, [0, Rf, 0])
eqs = [eq21, eq22, eq23]

И здесь на 4 строке Octave зависает на бесконечность (в консоли просто выводится Waiting......)
Почему так происходит?
  • Вопрос задан
  • 158 просмотров
Подписаться 2 Простой 8 комментариев
Решения вопроса 1
Pakonigoosy
@Pakonigoosy Автор вопроса
Разработчик ПО
Ошибка была довольно простой:
M1 - это число, а cross(F-d, [0, Rf, 0]) - это трехмерный вектор. Требовалось заменить
eq23 = M1 + cross(F-D, [0, Rf, 0]) на eq23 = M1 + norm(cross(F-D, [0, Rf, 0]))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы