matlab: hacer que el dominio de una función dependa del dominio de las entradas

matlab: hacer que el dominio de una función dependa del dominio de las entradas

Supongamos que uno tiene funciones f(i)y g(j). ¿Cómo se podría escribir una función h(k)donde el dominio kde hesté formado por todos k=i+j(es decir, cada punto h(k)es alguna función de fat iy gat jpara todos los pares de iy jque satisfagan k=i+j)? Por ejemplo:

ingrese la descripción de la imagen aquí

para todos k=i+j. El dominio de hsería entonces k=2:25y, por ejemplo, h(3)sería igual a f(1)*g(2) + f(2)*g(1)ya que ambas combinaciones satisfacen k=i+j.

Esto es sencillo de hacer usando bucles, pero deseo componer la función en forma de función anónima (es decir, h = @(k) f(i) ... g(j)). ¿Cómo se puede lograr esto?

Respuesta1

Sean ay bvariables conocidas para los dominios i y j. Entonces la función que usted describe podría verse así:

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

donde f1y f2son funciones anónimas correspondientes a f(i) y g(j). kes un escalar válido.

Nota: puede que no se considere una buena práctica utilizar una función anónima para algo que no sea trivial.

Nota 2: No he considerado escenarios con dominios no únicos para i y j, ni valores negativos.

información relacionada