Решение интегральных уравнений с помощью DSolveValue

#wolfram-mathematica #differential-equations #integral #numerical-integration

#wolfram-mathematica #дифференциальные уравнения #интеграл #численное интегрирование

Вопрос:

Я должен численно решить следующее интегральное уравнение в Mathematica: x [s] == 2.5 — (1.35 NIntegrate[x[t], {t, 0.7, 1}])/( 0.1 — 0.1 NIntegrate[x[t], {t, 0.7, 1}]), x[0.9] == 1

Для этого я использую NSolveValue следующим образом:

Значение DSolveValue[{x[s] == 2.5 — (1.35 NIntegrate[x[t], {t, 0.7, 1}])/(0.1 — 0.1 NIntegrate[x[t], {t, 0.7, 1}]), x[0.9] == 1}, x[s], s]

Но Mathematica выдает следующие ошибки: подынтегральное выражение x[t] получило нечисловые значения для всех точек выборки в области с границами {{0.9,1}}.

Дальнейший вывод NIntegrate::inumr будет подавлен во время этого вычисления.

Для некоторых ветвей общего решения заданные граничные условия приводят к пустому решению.

Что я делаю не так?

Спасибо за вашу помощь!

Ответ №1:

Предположим, x[t] достаточно хорошо, чтобы это сработало.

Предположим, y[t] является неопределенным интегралом от x[t] .

Предположим, что определенный интеграл от x[t] от t = .7 до 1 равен y[1]-y[.7] .

Позже мы должны проверить, верно ли все это.

Итак, ваша проблема становится

 DSolve[y'[s]==25/10-(135/100 (y[1]-y[7/10]))/(1/10-1/10 (y[1]-y[7/10]))},y[s],s]
  

который возвращает

 {{y[s] -> C[1]   s*(16 - 27/(2   2*y[7/10] - 2*y[1]))}}
  

Теперь примените ваше начальное условие

 FullSimplify[Solve[1==c1 9/10(16-27/(2 2y[7/10]-2y[1])),c1]]
  

который возвращает

 c1 -> -67/5   243/(20*(1   y[7/10] - y[1]))
  

и поместите это в решение

 y[s]==FullSimplify[-67/5 243/(20*(1 y[7/10]-y[1])) s*(16-27/(2 2*y[7/10]-2*y[1]))]
  

который возвращает

 y[s] == -67/5   16*s - (27*(-9   10*s))/(20*(1   y[7/10] - y[1]))
  

Мы не знаем значений y[7/10] или y[1] . Но, к счастью y[s] , это довольно просто.

Если я попытаюсь решить для ваших двух неизвестных

 Reduce[{y[7/10] == -67/5 16*7/10-(27*(-9 10*7/10))/(20*(1 y[7/10]-y[1])),
         y[1]   == -67/5 16*1-   (27*(-9 10*1   ))/(20*(1 y[7/10]-y[1]))},{y[7/10],y[1]}]
  

это возвращает

 (y[7/10] == (-14 - Sqrt[766])/15 || y[7/10] == (-14   Sqrt[766])/15) amp;amp;
y[1] == (3 - y[7/10])/2
  

Затем

 y[s] == FullSimplify[-67/5   16*s - (27*(-9   10*s))/
  (20*(1   (-14 - Sqrt[766])/15 - (3 - (-14 - Sqrt[766])/15)/2))]
  

ВОЗВРАТ

 y[s] == (-77 - 3*Sqrt[766])/10   ((29   Sqrt[766])*s)/3
  

или

 y[s] == FullSimplify[-67/5   16*s - (27*(-9   10*s))/
  (20*(1   (-14   Sqrt[766])/15 - (3 - (-14   Sqrt[766])/15)/2))]
  

ВОЗВРАТ

 y[s] == (-231   9*Sqrt[766] - 10*(-29   Sqrt[766])*s)/30
  

Это помогает? Можете ли вы взять результат и попытаться проверить, является ли это допустимым решением? Или определить какой-либо шаг, который был недействительным? Или упростить этот процесс и заставить Mathematica выполнять больше работы?

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