matlab: tornando o domínio de uma função dependente do domínio das entradas

0

Suponha que uma tenha funções f(i) e g(j) . Como se poderia escrever uma função h(k) , onde o domínio k de h é composto de todo k=i+j (ou seja, cada ponto h(k) é alguma função de f at i e g at j para todos os pares de i e j satisfazendo k=i+j ). Por exemplo:

para todo o k=i+j . O domínio de h seria, portanto, k=2:25 e, por exemplo, h(3) seria igual a f(1)*g(2) + f(2)*g(1) , uma vez que ambas as combinações satisfazem k=i+j .

Isso é simples de usar usando loops, mas desejo compor a função no formulário de função anônima (por exemplo, h = @(k) f(i) ... g(j) ). Como isso pode ser feito?

    
por user001 17.10.2016 / 01:36

1 resposta

1

Deixa que a e b sejam variáveis conhecidas para os domínios iej. Então a função que você descreve pode ser assim:

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

em que f1 e f2 são funções anônimas correspondentes a f (i) e g (j). k é um escalar válido.

Nota: pode não ser uma boa prática usar uma função anônima para algo não trivial.

Observação2: não considerei cenários com domínios não exclusivos para i e j nem valores negativos.

    
por 17.10.2016 / 09:39

Tags