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!