2016-11-03 3 views
1

Я пытаюсь использовать дельта-функцию Дирака в системе уравнений, так что Н (т) возрастает при Т = 1,5, т = 3, т = 4,5 и т.д.дельта функции Дирака клена

Вот мой код ниже:

A:=30: a:=1: dm:=3: c3:=5: d0:=1/a: t0:=1/dm: h0:=B0: y:=A*a: cc:=t0*c3: #same as cc=c3/Bm 
N:=8: T:=0.5: 

sys_ode:= diff(h(t),t)=y*sum(Dirac(t-dm*n*T),n=0..N) - exp(1-d(t))*h(t), diff(d(t),t)=exp(1-d(t))*h(t) - cc*d(t); 

ics:=h(0)=A*a, d(0)=0: 
ND:=dsolve([sys_ode,ics],numeric); #numerical solution to the system 


ND(1); 

ND(2); 

ND(3); 

ND(4); 

в настоящее время, когда я запускаю это я получаю:

ND(1); 
     [t = 1., d(t) = HFloat(2.6749858704773097), 

     h(t) = HFloat(23.164506116038023)] 
ND(2); 
     [t = 2., d(t) = HFloat(2.5365091646635465), 

     h(t) = HFloat(18.95651519442652)] 
ND(3); 
     [t = 3., d(t) = HFloat(2.376810307084265), 

     h(t) = HFloat(15.018803909414379)] 
ND(4); 
     [t = 4., d(t) = HFloat(2.1927211646807137), 

     h(t) = HFloat(11.391114874494281)] 

Но ч (Т) в теории должно быть увеличение в стоимости, так как есть вход в систему при Т = 1,5 и при t = 3 и не уменьшилось вплоть до h (t) = 11,39 при t = 4.

Любые идеи, в которых я поступил неправильно, будут оценены. Благодарю.

ответ

1

Для Maple 2015.0 была добавлена ​​поддержка численного интегрирования задач ODE, содержащих функции Дирака 0-го порядка. Поскольку это дополнение, результаты интеграции, которые вы показываете, выглядят следующим образом:

> ND(1); 
     [t = 1., d(t) = 3.01973877409584, h(t) = 37.2561191650856] 

> ND(2); 
     [t = 2., d(t) = 3.38932165514909, h(t) = 61.6360962313253] 

> ND(3); 
     [t = 3., d(t) = 3.32743891599543, h(t) = 71.0940887774625] 

> ND(4); 
     [t = 4., d(t) = 3.59829473587253, h(t) = 79.8444924691185] 

Функция действительно увеличивается.

В предыдущих версиях Maple особого обращения к Дираку не проводилось для цифровой интеграции, поэтому, если вы не набрали точки Дирака-0 точно, они будут проигнорированы, и если бы они были удалены, интеграция остановилась бы с неопределенным. Старый способ работал бы так же, как если бы функции Дирака даже не были там, что соответствовало вашему результату:

> sys_ode:= diff(h(t),t)= - exp(1-d(t))*h(t), 
>   diff(d(t),t)=exp(1-d(t))*h(t) - cc*d(t): 
> ND:=dsolve([sys_ode,ics],numeric): 

> ND(1); 
     [t = 1., d(t) = 2.67498587047731, h(t) = 23.1645061160380] 

> ND(2); 
     [t = 2., d(t) = 2.53650916466355, h(t) = 18.9565151944265] 

> ND(3); 
     [t = 3., d(t) = 2.37681030708426, h(t) = 15.0188039094144] 

> ND(4); 
     [t = 4., d(t) = 2.19272116468071, h(t) = 11.3911148744943] 
+0

Абсолютная легенда, спасибо много! Я удалил maple2015.0 и переустановил maple2015.2, и проблема была решена с использованием Dirac, как и ожидалось. – Student201