Всем привет,
Я пытаюсь решить уравнения в функции Matlab, которая является частью модели Simulink.
Одно из этих двух уравнений является интерполяцией заданного массива.
% variable definiton % T function argument % p = f(T) values are given in form of a 69x2 double % a | b | c | h constants / parameters (defined or calculated beforehand) % equations % eqn 1 % p = interp1(p(:,1),p(:,2),T) % eqn 2 % h = a * T + p * (b + c * T) % As I am used to solve equations with my pocket calculator I quickly found something like this while browsing: syms T solve (h == a * T + interp1(p(:,1),p(:,2),T) * (b + c * T),T); % Unfortunately I do not have the required toolbox to solve equations which is why I need to find a work-around % my next idea was to use an iteration to solve this (which I did not formulate and test until now) % it would be something like that though: for T = 1:100 p = interp1(p(:,1),p(:,2),T); h_iter = a * T + p * (b + c * T); if h_iter > h - h_marge | h_iter < h + h_marge break end end % with h_marge being a predefined value for accuracy tolerance
Я хотел бы избежать такого итерационного процесса, поскольку итерация должна выполняться на каждом шаге моделирования, что может привести к длительному времени моделирования.
в зависимости от точности и начальных условий, которые я определяю.
Таким образом, я хотел спросить вас, есть ли другой метод/решение для решения этой проблемы.
ПРИМЕЧАНИЕ.
Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech , ME, M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.
Ответ эксперта
Прашант Кумар ответил. 2021–10–21 06:59:13
interp1 несовместим с символическими параметрами. Вы НЕ МОЖЕТЕ использовать interp1 с решением. Период. Итак, где бы вы ни нашли этот фрагмент кода, они были неверны.
Вы можете использовать такой инструмент, как fzero, с interp1. fzero и interp1 совместимы.
Далее, глядя на вашу проблему, это на самом деле задача с ДВУМЯ переменными и двумя уравнениями. То есть у нас есть известные константы a,b,c,h. И есть два неизвестных. К сожалению, вы, кажется, используете p в двух местах одновременно, и как массив известных элементов, и как переменную. И это чертовски сбивает с толку.
Итак, я сделаю предположение, что у вас есть две переменные, я буду называть тогда T и p_T. То есть p_T задается как:
p_T = интерп1 (р (:, 1), р (:, 2), Т)
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ