Eu resolvi meu problema usando o seguinte:
f = symfun(int(x^(2)*sin(n*x),x),x);
Agora posso usar f(0)
como desejo. Eu também encontrei o seguinte se eu quisesse mudar para o cálculo numérico:
fn = matlabFunction(f)
Estou a perguntar a esta comunidade por esta questão . Por favor, deixe-me saber se isso é incorreto e qual comunidade eu deveria usar.
Estou tentando avaliar uma integral no Matlab usando:
int(x^(2)*sin(n*x),x)
Que retornará:
(2*x*sin(n*x))/n^2 - cos(n*x)*(x^2/n - 2/n^3)
Eu então quero avaliar o resultado desta integral em valores específicos (similar a uma integral definida, mas eu não tenho que recomputar a integral uma e outra vez se eu precisar conectar muitos pontos diferentes). Existe uma maneira de armazenar o resultado da integral como uma função? Eu tentei:
f = @(x) int(x^(2)*sin(n*x), x)
mas, se eu quiser avaliar f
em 0, f(0)
tentará fazer: int((0)^(2)*sin(n*0), x)
, onde eu quero: (2*(0)*sin(n*(0)))/n^2 - cos(n*(0))*((0)^2/n - 2/n^3)
. Essencialmente, eu quero que o Matlab leve a integral e então avalie em um certo valor, sem ter que copiar e colar o resultado do comando int()
na próxima linha? Eu relacionaria isso com os no Linux, de modo que eu gostaria de canalizar a saída do int()
chame a próxima linha e avalie seu resultado em um valor específico. Existe uma maneira de fazer isso?
Você pode fazer isso salvando uma versão simbólica da equação resolvida.
sums n x
f = sym('int(x^(2)*sin(n*x),x)')
f é agora uma representação simbólica de
(2*x*sin(n*x))/n^2 - cos(n*x)*(x^2/n - 2/n^3)
use o comando pretty (f) para visualizá-lo de maneira limpa.
Para usar essa equação para obter uma resposta numérica, use o comando subs ():
subs( f, [x n], [1,5])
Eu não tenho o matlab disponível para verificar minha sintaxe, mas se esta for a capacidade que você está procurando, deve ser suficiente para você começar.
Tags matlab