Vectorization and plotting user-defined function
Mostrar comentarios más antiguos
I am new to MATLAB and am having trouble understanding how to plot userdefined functions.
I have defined a function f via
fun=@(t,r)(t.^2-t.^4).*exp(r.*t.^2);
fun1=@(t,r)exp(r.*t.^2);
f=@(r)integral(@(t)fun(t,r),0,1)./integral(@(t)fun1(t,r),0,1);
Now if I specify say
r=linspace(-10,10);
and type
x=f(r);
I get errors such as
Matrix dimensions must agree.
Error in @(t,r)(t.^2-t.^4).*exp(r.*t.^2)
whereas
x=sin(r);
is accepted. I seem to have been careful to use .* etc. What is the difference between my f and sin, and how do I plot a parametrized graph (f(r),g(r))?
Respuesta aceptada
Más respuestas (1)
Steven Lord
el 4 de Sept. de 2020
2 votos
By default integral calls the integrand function with a vector of values at which the integrand should be evaluated. There's no guarantee that this vector will have a size compatible with the size of your r vector.
If you tell integral that your function is array-valued by passing the name-value pair 'ArrayValued', true then integral will call your integrand with a scalar and expect an array as output. Try running the "Vector-Valued Function" example on the documentation page for the integral function with and without the name-value pair and compare the results.
Categorías
Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!