2014-11-25 2 views
1

Я хочу выполнить символическую интеграцию с течением времени; код приведен ниже.MATLAB: символический интеграл от symfun

syms x1 u1 t 
x1 = symfun(sym('x1(t)'), [t]); 
x1dot = p1 + p4*p8 - p13*x1; 
int(x1dot,t) 

Ответ должен быть:

e^(-p13*t)*x1(0)+(p1 + p4*p8)/(-p13)*[1-e^(-p13*t)] 

, что я получаю:

Warning: Explicit integral could not be found. 

ans(t) = 

int(p1 - p13*x1(t) + p4*p8*u1(t), t) 

Мне кажется, что он не признает, что x1dot является производной x1. Как я могу решить эту проблему?

+0

Что такое 'p1',' p4', 'p8' и' p13'? Измените свой вопрос и определите их. от вашей ошибки, похоже, что 'u1' также является' symfun'. Покажите свой код активации и фактическое полное сообщение об ошибке. Кроме того, ваши первые две строки кода могут быть написаны просто как «syms x1 (t) u1' (нет причин однозначно вызывать« symfun »). – horchler

ответ

2

То, что вы пытаетесь сделать, это строго говоря, не интеграции, то есть от известной функции f(t) вывести функцию F(t) таким образом, что производная F является f. Первоначальная функция на самом деле не известна, поскольку она зависит от самого себя (независимо от того, насколько тривиальным может быть отношение к человеку, вам нужно его инвертировать).

Это скорее решение дифференциального уравнения, for which dsolve is probably the way to go. MATLAB не имеет возможности догадаться, что x1dot является производной от x1. Я думаю, вы могли бы объявить x1dot=diff(x1), но почему бы не использовать diff(x1), где это необходимо?

+0

Да. Я хочу, чтобы проблема заключалась в том, что, например, 'x (t)' - это то, что Matlab обозначает как произвольную или абстрактную символическую функцию (без специального определения). По причинам, указанным выше, даже что-то простое, как 'int (x (t), t)' не может быть «разрешено», но должно быть оставлено в интегральной форме. Matlab не может догадаться, как 'x (t)' зависит от 't'. – horchler

Смежные вопросы