2016-04-04 5 views
0

Я пытался использовать команду dsolve в Matlab, чтобы решить множество ОДУ, но я получаю эти ошибки:Ошибка при решении символической системы ОДУ с использованием dsolve

Ошибка в dsolve> mupadDsolve (линия 332) T = feval (symengine, 'symobj :: dsolve', sys, x, options);

Ошибка в dsolve (строка 193) sol = mupadDsolve (args, options);

Ниже приведен код, если кто-то хочет, чтобы взглянуть на него:

syms t b1 b2 k1 k2; 
A=0.5; 
m1=3;m2=4;w=6; 
y=A*sin(w*t); 
xt=dsolve('m1*D2x1+b1*((Dx1)-Dy)+k1*(x1-y)+b2*((Dx1)-(Dx2))+k2*(x1-x2)=0','m2*D2x2+b2*((Dx2)-(Dx1))+k2*(x2- x1)=0','x1(0)=0','Dx1(0)=0','x2(0)=0','Dx2(0)=0'); 

Может кто-то пожалуйста, помогите мне с этим?

Спасибо всем вам очень много

+0

Ошибка сообщения должно быть. Какова полная ошибка? Кроме того, исправьте форматирование кода в своем вопросе. –

+0

Спасибо Andras error: «Ошибка при использовании mupadengine/feval (строка 163) Недействительные начальные условия. Ошибка в dsolve> mupadDsolve (строка 332) T = feval (symengine, 'symobj :: dsolve', sys, x, options); Ошибка в dsolve (строка 193) sol = mupadDsolve (args, options); ' – Taiwaninja

+0

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

ответ

0

Цитирования из dsolve documentation:

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

Таким образом, Dy в своем аргументе строка говорит dsolve есть какая-то неизвестная функция y решить для но без начального условия (в дополнение к его будучи неопределимость система).

Чтобы устранить эту проблему, определить производную в y вне dsolve и присвоить его переменной без D:

syms t b1 b2 k1 k2; 
A=0.5; 
m1=3;m2=4;w=6; 
y=A*sin(w*t); 
dydt = diff(y,1); 
xt=dsolve('m1*D2x1+b1*((Dx1)-dydt)+k1*(x1-y)+b2*((Dx1)-(Dx2))+k2*(x1-x2)=0','m2*D2x2+b2*((Dx2)-(Dx1))+k2*(x2-x1)=0','x1(0)=0','Dx1(0)=0','x2(0)=0','Dx2(0)=0'); 

Эта версия кода работает для меня ... и бежит и бежит. Хотя он и работает, я думаю, что для получения ответа необходимо определить больше констант.

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

  • Нет связанных вопросов^_^