How can I define square of a handle function inside an integral?
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ashkan Rigi
el 1 de Nov. de 2021
Comentada: Steven Lord
el 1 de Nov. de 2021
Hello every body. This is my code and I get the error " Undefined function 'sqrt' for input arguments of type 'function_handle'."
a=1;b=2;c=3;s=10;tt=12;
kkk=@ (t) (sqrt((3.*a(1).*(t-tt(1)).^2+2.*b(1).*(t-tt(1))+c(1)).^2)).^3;
kk=@(t) (18*a(1).^2*(t-tt(1)).^2+2.*b(1).*6.*a(1).*6.*a(1).*b(1).*(t-tt(1)).^2 ...
+2.*b(1).^2.*(t-tt(1))+6.*a(1).*c(1).*(t-tt(1))).^2;
kk=@(t)sqrt(kk);
k=kk/kkk;
bs=integral(k^2,0,s(1))
0 comentarios
Respuesta aceptada
John D'Errico
el 1 de Nov. de 2021
Editada: John D'Errico
el 1 de Nov. de 2021
kk is a function handle, as is kkk. (Really creative names there. Note that using better, more descriptive names will greatly improve your code in the future, when you need to debug that code. As well, don't reuse variables like that, where you create kk as a functino handle, and then immmediately try to create a new function handle with the same name. That will only bring you down into the depths of programming hell when you try to debud code like that.)
Anyway, you CANNOT do operations like this:
kk=@(t) sqrt(kk);
or this:
k=kk/kkk;
or, this:
bs=integral(k^2,0,s(1))
Instead, you need to create a new function handle derived from it. For example:
kkfun = @(t) sqrt(kk(t));
kfun = @(t) kkfun(t)./kkk(t);
bs=integral(@(t) kfun(t).^2,0,s(1))
The point is, you do not want to square the function handle itself, but to square what it does to the operand (t). You do not want to divide two function handles, one by the other, but to divide the result of those function handles.
1 comentario
Steven Lord
el 1 de Nov. de 2021
To summarize John's last paragraph, you can't do arithmetic on function handles. You can do arithmetic on the values returned by evaluating function handles.
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!