2017-03-23 23 views
0

我想制作一个程序,它会要求用户输入函数,例如cos(x) + 2。我的问题是,我不知道如何使输入的函数成为一个真正的函数的语法或代码,我可以操纵它,就像获得它的派生物,绘制它,就像那样。任何人都可以请教我如何做到这一点?谢谢!来自用户输入的函数定义

+0

如果你真的想得到一些帮助,那么我建议首先请表明一些自己的努力来解决问题,如果你感到震惊,那么发布一个关于特定问题或错误的[mcve]。这不是一个按需教程网站,我认为... – Attila

+0

如果我已经知道答案,我不会来这里。由于缺乏资源,我无法在2天内找到解决方案。我所知道的是,x = input(“输入你的函数”)是语法。但是这只需要一个常量值,而x = input(“输入你的函数”,“s”)也只需要一个字符串。我该如何做到这一点,我可以使输入的函数成为一个真正的函数,而不是一些常量或字符串,我可以在其中操纵它,如绘制它或采用其衍生物 –

+0

好的,请看下面的答案。它有助于你入门吗? – Attila

回答

0

要创建一个“真实”的功能,你可以使用2个不同的语法:

function [x]=myfct(a,b) 
    x=a+b; 
endfunction 

deff("[x]=myfct(a,b)","x=a+b"); 

注意:如果你只有一个返回varaible,可以省略方括号。

后一种形式更直接在这里,因为你只需要从用户问2个或3串:

  1. function_statement:答案应该是"x=a+b"

  2. input_varaible_list(用逗号分隔):答案应该是"a,b"

  3. output_varaible_list(用逗号分隔):答案应该是"x"

然后把它一起在一个deff

deff("["+output_varaible_list+"]=myfct("+input_varaible_list+")",function_statement); 

如果固定输出变量名x,那么你不必问它,用户只有输入函数语句的右侧(在=之后)。因此,它变成了:

deff("[x]=myfct("+input_varaible_list+")","x="+function_statement); 

对于衍生看到Scilab的帮助derivativenumdiff功能。

+0

谢谢我欣赏它。 –