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

采纳的回答

Matt J
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]))

更多回答(2 个)

Stephen23
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
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.
Abdulaziz Abutunis
Abdulaziz Abutunis 2017-3-21
not necessary info for the question..if there is no way to do it then i will switch to another technique

请先登录,再进行评论。


Steven Lord
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)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by