matlab: создание области определения функции в зависимости от области определения входных данных

matlab: создание области определения функции в зависимости от области определения входных данных

Предположим, что есть функции f(i)и g(j). Как можно написать функцию h(k), где область kопределения hсостоит из всех k=i+j(т.е. каждая точка h(k)является некоторой функцией от fпри iи gпри jдля всех пар iи , jудовлетворяющих k=i+j). Например:

введите описание изображения здесь

для всех k=i+j. Область определения, hтаким образом, будет k=2:25и, например, h(3)будет равна , f(1)*g(2) + f(2)*g(1)поскольку обе эти комбинации удовлетворяют k=i+j.

Это просто сделать с помощью циклов, но я хочу составить функцию в форме анонимной функции (т.е. h = @(k) f(i) ... g(j)). Как это можно сделать?

решение1

Пусть aи bбудут известными переменными для доменов i и j. Тогда описанная вами функция может выглядеть так:

fun=@(k) sum(sum(transpose(f1(k-b(ismember(b,(k-a)))))*f2(b(ismember(b,(k-a))))))

где f1и f2— анонимные функции, соответствующие f(i) и g(j). k— допустимый скаляр.

Примечание: использование анонимной функции для чего-то нетривиального может считаться нехорошей практикой.

Примечание 2: Я не рассматривал сценарии с неуникальными доменами для i и j, а также отрицательными значениями.

Связанный контент