Постройте решение решения ODE в MATLAB с несколькими вовлеченными константами

Основная цель: решить и построить решение ОДУ D2f=a1*f+a0

куда

a1=k*H*H/c;
a0=-H*H*tau0/c;
c=0.1;
k=1;
H=1;
tau0=1;

Я использую команду dsolve, чтобы найти решение с указанными выше значениями констант.

sol=dsolve('D2th=a1*th+a0','th(0)=0','th(1)=0','t');

Вместо того, чтобы получить решение с заданными значениями констант, я получаю решение как:

sol =


(exp(a1^(1/2)*t)*(a0 - a0*exp(-a1^(1/2))))/(a1*(exp(a1^(1/2)) - exp(-a1^(1/2)))) - (exp(-a1^(1/2)*t)*(a0 - a0*exp(a1^(1/2))))/(a1*(exp(a1^(1/2)) - exp(-a1^(1/2)))) - a0/a1

Мне нужно, чтобы MATLAB автоматически заменял значения констант (a1, a0 и т. д.), а затем решал уравнение, чтобы результаты отображались в полной упрощенной форме.

Во-вторых, я хочу построить решение приведенного выше ОДУ следующим образом:

t0=0;
tf=1;
N=100;
h=(tf-t0)/N;
t=t0+(0:N)'*h;
plot(t,sol)

Я пробовал plot(t,sol(t)), но ничего не работает.

Краткое содержание вопроса: сначала решите ОДУ, заменив значения констант в решении, а затем постройте решение относительно вектора-столбца t.


person user3630852    schedule 13.05.2014    source источник


Ответы (1)


Решение представляет собой символическое выражение. Что вам нужно, так это замена в символьных выражениях и построение символьных выражений. Быстрый поиск на веб-сайте Matlab дает подходящие функции subs и ezplot. Я исправил код, но, пожалуйста, проверьте работу этих двух функций либо в Интернете, либо в вашем Matlab.

H=1;
k=1;
c=0.1;
tau0=1;
a1=k*H*H/c;
a0=-H*H*tau0/c;
sol=dsolve('D2th=a1*th+a0','th(0)=0','th(1)=0','t');
sol2 = subs(sol, [sym('a0'),sym('a1')], [a0, a1]);
t0=0;
tf=1;
ezplot(sol2, [t0, tf]);
person Trilarion    schedule 13.05.2014
comment
Я благодарна вам за решение проблемы. Обязательно проверю информацию о сабах и ezplot. - person user3630852; 13.05.2014