#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 выполнять больше работы?
Пожалуйста, проверьте все это очень тщательно, прежде чем доверять чему-либо из этого.