0 Ваше определение fpz не имеет никакого смысла; как уже сказал Марчин, вы пытаетесь интегрировать что-то, что не является функцией. Это не должно быть проблемой для вашей альтернативной версии с f2z. Я думаю, что код в исходном вопросе должен был иметь только f1x, а не f1x (z) в первой строке.
1 Ваша исправленная версия с f2z имеет другую проблему: теперь в fpz вы фактически не предоставляете функцию с аргументом.
Следующий код кажется вам тем, о чем вы думали, и он прекрасно работает для меня (в MATLAB R2008a, как это бывает, но в других версиях это не должно отличаться):
f1x = @(x) 1 ./ (x.^2+1);
fpx = @(x) f1x(x) ./ quadl(f1x,0,1);
fpz = @(z) fpx(z) ./ quadl(fpx,0,1);
Теперь при вычислении fpz (3), например, вращается примерно полсекунды (на моем старом медленном ноутбуке) и возвращает 0,1273.
Так что я думаю, что проблемы, с которыми вы сталкивались при интеграции анонимных функций, заключаются лишь в том, что вы недостаточно внимательны, чтобы различать саму функцию и конкретное значение функции.
У вас есть дополнительные вопросы о функциях «solve» и «int» в Symbolic Math Toolbox. Вы должны принять следующее с небольшим количеством соли, потому что у меня нет этого набора инструментов, и я полагаюсь на онлайн-документацию для него.
3 Вы вводите имена функций, которые вы определили в MATLAB, в функции Symbolic Math Toolbox. Я не думаю, что это должно работать; «int» и «solve» ожидают явных алгебраических выражений, а не функций MATLAB. (И, кроме того, все ваши функции используют числовое интегрирование - quad, quadl и т. Д. - и нет никакой возможности, чтобы символические функции могли сделать что-нибудь полезное с этим.)
Наконец: когда вы задаете вопросы такого рода, полезно, если вместо того, чтобы "это не работает", вы говорите как это не работает. Например, ваш последний комментарий гораздо более полезен («он дает мне ...», за которым следует фактический вывод, который вы получаете из MATLAB).