![]() |
如何在MATLAB中使用符号表达式创建函数?
如何从符号表达式中创建函数?例如,我有以下内容:
syms beta n1,n2,m,aa= Constants u = sqrt(n2-beta^2); w = sqrt(beta^2-n1); a = tan(u)/w+tanh(w)/u; b = tanh(u)/w; f = (a+b)*cos(aa*u+m*pi)+ab*sin(aa*u+m*pi); %# The main expression 如果要在特殊程序中使用f来查找其零,如何将f转换为函数?或者,我应该怎么做才能找到f和此类嵌套表达式的零? [B]回答:[/B] 您有几种选择... [B]选项1:自动生成函数[/B] 如果您使用的是[URL="http://www.mathworks.com/access/helpdesk/help/toolbox/symbolic/rn/brqy13y-1.html"]4.9版(R2007b +)或更高版本[/URL]的[URL="http://www.mathworks.com/products/symbolic/"]Symbolic Toolbox[/URL] ,则可以使用[URL="http://www.mathworks.com/access/helpdesk/help/toolbox/symbolic/matlabfunction.html"][B]matlabFunction[/B][/URL]函数将符号表达式转换为匿名函数或函数M文件。文档中的示例: >> syms xy >> r = sqrt(x^2 + y^2); >> ht = matlabFunction(sin(r)/r) ht = @(x,y)sin(sqrt(x.^2+y.^2)).*1./sqrt(x.^2+y.^2) [B]选项2:手动生成函数[/B] 由于您已经编写了一组符号方程式,因此只需将部分代码剪切并粘贴到函数中即可。这是您上面的示例所示: function output = f(beta,n1,n2,m,aa) u = sqrt(n2-beta.^2); w = sqrt(beta.^2-n1); a = tan(u)./w+tanh(w)./u; b = tanh(u)./w; output = (a+b).*cos(aa.*u+m.*pi)+(ab).*sin(aa.*u+m.*pi); end 调用此函数f您必须输入beta值和4个常量,它将返回评估主表达式的结果。 [B]注意:[/B]由于您还提到要查找f零,因此可以尝试在符号方程式上使用[URL="http://www.mathworks.com/access/helpdesk/help/toolbox/symbolic/solve.html"]SOLVE[/URL]函数: zeroValues = solve(f,'beta'); [url=https://stackoverflow.com/questions/1995486]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 00:17。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.