Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
如何从符号表达式中创建函数?例如,我有以下内容:
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和此类嵌套表达式的零? 回答: 您有几种选择... 选项1:自动生成函数 如果您使用的是4.9版(R2007b +)或更高版本的Symbolic Toolbox ,则可以使用matlabFunction函数将符号表达式转换为匿名函数或函数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) 选项2:手动生成函数 由于您已经编写了一组符号方程式,因此只需将部分代码剪切并粘贴到函数中即可。这是您上面的示例所示: 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个常量,它将返回评估主表达式的结果。 注意:由于您还提到要查找f零,因此可以尝试在符号方程式上使用SOLVE函数: zeroValues = solve(f,'beta'); 更多&回答... |
![]() |
![]() |