Plot a matrix which has functions
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
I have these functions (in a script):
fx = @ (x) exp(-x.^2);
f1x = @ (x) 1/(x.^2+1);
fpx = f1x/int(f1x,x,0,1)
I want to plot a table with {fx,fpx} when {x,0,1}.
How can I do this?
0 comentarios
Respuesta aceptada
Walter Roberson
el 26 de En. de 2011
int() is a routine that applies to symbolic expressions, not to function handles. Do you have access to the Symbolic Toolkit? If not, then you will need to do a numeric integration such as with trapz or quadl
If you are using the symbolic toolbox, you would rewrite all three clauses. If you are not, then your last clause should not be
fpx=f1x/int(f1x,x,0,1)
but rather something like
fpx = @(x) f1x(x) ./ quadl(f1x,0,1)
It should not, however, be something like
fpx = @(x) double(subs(f1x,'x',x)) ./ double(int(f1x,x,0,1))
which is close but has the problem that the "x" in the call to "int" needs to be the symbolic variable to integrate with respect to, and should not be the particular value of x that you are using to evaluate f1x in the numerator. You could, however, use:
fpx = @(x) double(subs(f1x,'x',x)) ./ double(int(f1x,'x',0,1))
Once you have constructed fpx to be a function of x, you could construct your table as
SubDivisons = 250;
xvals = linspace(0,1,SubDivisions) .';
YourTable = [fx(xvals), fpx(xvals)];
plot(xvals, YourTable);
4 comentarios
Más respuestas (1)
Paulo Silva
el 26 de En. de 2011
disp('Executing the function, please wait')
steps=0.05;
%increase steps to speed up execution, accuracy will be lower
%decrease steps to improve accuracy, you have to wait more time
x=0:steps:1;
fx=inline('exp(-x.^2)');
f1x=inline('1./(x.^2+1)');
fpx=sym(f1x)./int(sym(f1x));
fpx=subs(fpx,'x',x);
fx=subs(fx,'x',x);
Table=[fx;fpx];
plot(fx,fpx)
disp('All done, you can find the result in variable Table')
4 comentarios
Paulo Silva
el 27 de En. de 2011
I have no idea about what could be wrong, it's working here in Matlab 2008b (32bits), here's the result http://img254.imageshack.us/img254/5666/46107520.jpg
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!