2017-03-23 19 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

謝謝我欣賞它。 –