Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
How can I use integral function this way?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
function [mat_uni] = mat_unif(i,j,k,s,ro,h_b,x_b1,x_b2)
fi_jk = 2./sqrt(3).*pi.^(-1./4).*2.^(j./2).*(1-(2.^j.*x-k).^2).*exp(-(2.^j.*x-k).^2./2);
fi_is = 2./sqrt(3).*pi.^(-1./4).*2.^(i./2).*(1-(2.^i.*x-s).^2).*exp(-(2.^i.*x-s).^2./2);
mat_uni_der = @(x) 2.*ro.*h_b.*fi_jk.*fi_is;
mat_uni = integral(mat_uni_der, x_b1, x_b2);
end
The problems when integrating this function come from calling fi_jk and fi_is functions, since matlab does not recognize x as a variable that will later be used by integral().
If I delete the 'x' as an input, I am told that there are not enough input arguments. I have tried to define x using 'syms x', but other errors appeared: 'Input function must return 'double' or 'single' values. Found 'sym''.
Could it be useful to use the function handle? If so, how to use it?
Also, I would like to know what "opstruct" is used for.
Thank you very much for the possible answers.
2 Commenti
Risposte (2)
Walter Roberson
il 23 Mar 2017
function [mat_uni] = mat_unif(i,j,k,s,ro,h_b,x_b1,x_b2)
fi_jk = @(x) 2./sqrt(3).*pi.^(-1./4).*2.^(j./2).*(1-(2.^j.*x-k).^2).*exp(-(2.^j.*x-k).^2./2);
fi_is = @(x) 2./sqrt(3).*pi.^(-1./4).*2.^(i./2).*(1-(2.^i.*x-s).^2).*exp(-(2.^i.*x-s).^2./2);
mat_uni_der = @(x) 2.*ro.*h_b.*fi_jk(x).*fi_is(x);
mat_uni = integral(mat_uni_der, x_b1, x_b2);
end
0 Commenti
Roger Stafford
il 23 Mar 2017
I think it will work if you simply substitute those two expressions for fi_jk and fi_is, respectively, into the anonymous function mat_uni_der. It will make a very long line, but who cares about long lines? Getting it to work is what counts.
2 Commenti
Walter Roberson
il 23 Mar 2017
You could do numeric differentiation on a sampling of function values. Or you can use
syms x
dx = diff( mat_uni_der(x), x)
Questa domanda è chiusa.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!