Найдите собственные значения решения ODE45 MATLAB

У меня есть следующая нелинейная ОДУ: У меня есть следующее решение ODE45:

fun = @(t,X)odefun(X,K,C,M,F(t),resSize); 
[t_ode,X_answer] = ode45(fun,tspan,X_0); 

Входными матрицами являются жесткость K(X), демпфирование C, масса M и сила F. resSize — общее количество масс в системе.

Я хотел бы найти собственные значения системы, используя матрицу Якоби, передаточную функцию или любой другой жизнеспособный метод.

Я пробовал использовать:

[vector,lambda,condition_number] = polyeig(K(X_answer),C,M);

Это сложно, поскольку моя матрица K является дескриптором функции X. Другими словами, K=@(X). X представляет собой вектор смещения каждой массы в системе (x_1(t),x_2(t),...x_resSize(t)), где resSize — общее количество масс. Моя матрица X_answer представляет собой двойную матрицу с размерами t_ode на resSize, где каждая строка представляет собой вектор смещения каждой массы в двойной форме. Есть ли способ заменить X_answer в моем дескрипторе функции для K, чтобы я мог использовать polyeig()? Если нет, то как мне найти передаточную функцию моей системы или матрицу Якобиана, чтобы найти ее собственные значения?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не зная точной формы вашего уравнения, на основе вашего описания я предполагаю, что у вас есть что-то вроде:

[M]{x''}+[C]{x'} + [K(x)]{x} = F(t)

Поскольку эта система уравнений является нелинейной, собственные значения можно оценить на основе разложения вокруг каждого x, оцененного на основе выходных данных функции ode45. Поскольку ode45 объединяет систему уравнений первого порядка, вы, вероятно, ввели замену переменных, чтобы записать вышеуказанную систему как систему первого порядка. В форме пространства состояний это

{y'} = [A]{y} + b(t), где {y} = {x; Икс'}

Итак, выходные данные функции оды содержат смещения {x} и скорости {x'}.

Если вы хотите оценить собственные значения для каждого x на выходе, вы можете сделать

for ii=1:length(t_ode)
    [X,e] = polyeig(K(X_answer(ii,1:end/2),C,M)
end

Применяется ли polyeig() только к однородным EOM? Другими словами, нахожу ли я собственные значения моего ОДУ, предполагая, что F(t)=0 при использовании polyeig()? @Талес

Jonathan Frutschy 10.04.2024 18:17

Да. Общее решение — это Xh(t) + Xp(t), где Xh — решение соответствующего однородного уравнения, а Xp — частное уравнение. Однородное решение для линейных дифференциальных уравнений находится путем решения соответствующей проблемы собственных значений.

Thales 11.04.2024 23:45

Я пытаюсь получить передаточную функцию для этой системы. Вы были правы, предположив, что я сделал замену переменных. Что такое b(t) в СС 1-го порядка, который вы написали?

Jonathan Frutschy 17.04.2024 04:18

b(t) — вектор возбуждения соответствующей размерности. обычно {b(t)} = [zeros(n_gdl,1) ; M\f(t)]

Thales 18.04.2024 15:01

Другие вопросы по теме