2013-10-14 1 views
0

Пусть я (упрощенный), дифференциальное уравнениеКак использовать клены dsolve с интегральным условием

de:=diff(f(x),x,x,x)=1; 

У меня есть два граничных условия, например, f(-1)=0 и f(1)=0. Однако третья интеграционная константа должна подчиняться интегральному условию int(f(x),x=-1..1)=0.

Я знаю, как бороться с регулярными граничными условиями, т.е.

ans:=dsolve({de,f(1)=0,f(-1)=0}); 

Но, как я имею дело с интегральным условием?

Я пытался что-то вроде

ans:=dsolve({de,f(1)=0,f(-1)=0,int(f(x),x=-1..1)=0}); 

Но это не решает дифференциальное уравнение:

Ошибки, (в dsolve) система ввода не может содержать уравнения в один произвольных параметрах; найдено уравнение: Int (F (х), х = -1 .. 1, AllSolutions)

Моя проблема имеет решение с дополнительным шагом:

solve(int(rhs(ans),x=-1..1)=0); 

Но, я хотел бы поставьте это условие прямо в dsolve. Как это сделать?

ответ

3

Увеличение порядка на 1. То есть, пусть Р представляют собой первообразную ф (интегрированный от -1) и включить его в вызове dsolve вместе с двумя начальными условиями на F на основе на интеграл.

eval(
    f(x), 
    dsolve({ 
      diff(f(x),x$3)=1, f(-1)=0, f(1)=0, 
      diff(F(x),x)=f(x), F(-1)=0, F(1)=0 
    }) 
); 
+0

Спасибо, в моем примере я должен был поставить 'f '' '= 1', но для ответа это не имеет значения. Во всяком случае, это решение не очень изящно, так как мне еще нужен дополнительный шаг, верно? – Bernhard

+0

Хорошо, если вы хотите элегантности, я изменил свой ответ так, чтобы не требовался дополнительный шаг, и чтобы он был ближе к оригиналу. –