how to use anonymous function with equation without retype the all equation?
2 次查看(过去 30 天)
显示 更早的评论
Dear all,
does anyone know how to use the anonymous function with equation that already defined without type it again. For example,eq1 = x^2+3+y^3; sol=@(x,y) eq1. I tried eq1(2,2) but it does not work as wished. Please help
Best regards, Aziz
0 个评论
采纳的回答
Matt J
2017-3-21
编辑:Matt J
2017-3-21
If x, y and eq1 are symbolic variables, then there is no reason to be wrapping eq1 in an anonymous function. Just use the subs() command to evaluate eq1 at desired values. E.g.,
>> syms x y
>> eq1 = x^2+3+y^3
eq1 =
x^2 + y^3 + 3
>> val=double(subs(eq1,[x,y],[2,2]))
val =
15
If you insist on wrapping it in anonymous function, you could do something like,
sol=@(a,b) double(subs(eq1,[x,y],[a,b]))
1 个评论
Walter Roberson
2017-3-21
If you are starting from symbolic expressions, then use matlabFunction() to create function handles for numeric processing.
更多回答(2 个)
Stephen23
2017-3-21
编辑:Stephen23
2017-3-21
>> sol = @(x,y)x^2+3+y^3;
>> sol(2,2)
ans =
15
exactly as the documentation shows:
3 个评论
James Tursa
2017-3-21
Then please show us more detail about your problem. Where is the equation coming from? What is this iterative process doing? Etc.
Steven Lord
2017-3-21
As written, eq1 is not an equation. x and y must be defined before you execute "eq1 = x^2+3+y^3;" or you will receive an error. If you want to define the equation once and use it later, execute:
sol = @(x,y) x.^2+3+y.^3;
Note I used .^ so you can call sol with a nonscalar array, not just a scalar. If you need eq1 to be the value of that function for specific values of x and y:
eq1 = sol(2, 2)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!