Mathematica DSolve diff. уравнение над определенной областью

Я ищу способ решить следующее дифференциальное уравнение:

DSolve[(1 - b*Abs[z])*f[z]/a == f''[z], f[z], z]

Поэтому я попытался выполнить DSolve, различая z>0 от z‹0, например:

DSolve[(1 - b*z)*f[z]/a == f''[z], f[z], z>0]

Но у меня все равно не работает. Возможно, явное добавление домена поможет, но я не могу найти способ сделать это.

Кто-нибудь знает, как делать такие вещи?

Спасибо за вашу помощь и время


person LeChat    schedule 16.03.2016    source источник
comment
Весьма сомнительно, что существует символическое решение. Будет ли достаточно численного решения?   -  person Lutz Lehmann    schedule 16.03.2016


Ответы (1)


Вы можете передать свои предположения решателю с помощью Refine:

Refine[DSolve[(1 - b*Abs[z])*f[z]/a == f''[z], f[z], z], z > 0]

дает

{{f[z] -> AiryAi[(1/a - (b z)/a)/(-(b/a))^(2/3)] C[1] + AiryBi[(1/a - (b z)/a)/(-(b/a))^(2/3)] C[2]}}
person Nico Schertler    schedule 16.03.2016
comment
Спасибо! хотя я не уверен, как следует понимать термин (-(b/a))^(2/3). У меня все еще есть это, даже когда я добавляю предположение {z › 0, a › 0, b › 0} - person LeChat; 16.03.2016
comment
Я также узнал, что можно использовать параметр Assuming, например: Assuming[z > 0 && a > 0 && b > 0, DSolve[(1 - b*z)*f[z]/a == f''[z], f[z], z]] - person LeChat; 23.03.2016