У нас есть уравнение, аналогичное Fredholm integral equation второго рода.Реализация итеративного решения интегрального уравнения в Matlab
Для решения этого уравнения были даны итеративным решением, которое гарантировано сходиться для нашего конкретного уравнения. Теперь наша единственная проблема заключается в реализации этой итеративной процедуры в MATLAB.
В настоящем время, проблематичная часть нашего кода выглядит следующим образом:
function delta = delta(x,a,P,H,E,c,c0,w)
delt = @(x)delta_a(x,a,P,H,E,c0,w);
for i=1:500
delt = @(x)delt(x) - 1/E.*integral(@(xi)((c(1)-c(2)*delt(xi))*ms(xi,x,a,P,H,w)),0,a-0.001);
end
delta=delt;
end
delta_a
является функцией x
, и представляет собой начальное значение итерации. ms
- это функция от x
и xi
.
Как вы можете видеть, мы хотим, чтобы delt
зависел как от x
(перед интегралом), так и от xi
(внутри интеграла) на итерации. К сожалению, этот способ написания кода (с помощью дескриптора функции) не дает нам численного значения, как мы желаем. Мы не можем писать delt
как две разные функции: одну из x
и одну из xi
, так как xi
не определен (до integral
). Итак, как мы можем убедиться, что delt
зависит от xi
внутри интеграла и по-прежнему получать численное значение из итерации?
Есть ли у вас какие-либо предложения относительно того, как мы можем это решить?
Используя численное интегрирование
Объяснение входных параметров: х представляет собой вектор числовых значений, все остальные являются константами. Проблема с моим кодом заключается в том, что входной параметр x не используется (я думаю, это означает, что x рассматривается как символ).
Вы используете символическую или численную интеграцию? – Jan
@Jan Численное интегрирование. (Отредактированный мой вопрос) – Linda
Может быть, 'x' является вектором точек сетки, где ваша функция должна быть аппроксимирована ....? – Jan