我編寫了一個Prolog程序來解決簡單的三角方程。我寫它來獲取三角函數的值。例如,我可以獲得值sin(45)
,但我無法將sin(45)
的值分配到術語sin(45)
。我嘗試了=,==,=:=
運營商,但他們沒有工作。實際上,我想將sin(45)
的值傳遞給程序的下一個代碼,而不是術語sin(45)
。 謝謝...在序言中將sin函數的答案分配給術語sin(X)
3
A
回答
0
我學習和理解,值不能被分配使用=
一個術語, ,==
或=:=
類似過程語言。當我們使用這個運算符時,prolog只是比較兩個值。因此,我們應該通過 值作爲參數。作爲一個例子,
isolax(1,sin(U) = V,U = R):-
getasin(V,R).
getatan(X,R):-R is atan(X).
即使我們不定義爲獲得罪孽,餘弦,正切,序言答案爲罪,餘弦,正切自動事實或規則。
4
算術通過一些專門的內建進行的,像is/2,或(<)/ 2,即評估他們的右手項作爲表達,並用左手統一的數值手邊。最常見的用法是在
?- X is sin(pi/2).
X = 1.0.
音符值分配給一個免費變量,像罪/參數1它的弧度。評估之後,您將現在綁定到數值的變量傳遞給下一個代碼。
1
prolog中的複合詞(「functors」或「structures」)沒有任何數值「值」。 Prolog的算術引擎不計算值「分配」這樣的術語,它只是使用所計算出的值作爲外操作參數 或界定的計算值給一個變量(如「是」內置謂詞一樣)
Y is sin(45), ... % Y is now now bound to the numeric result of sin(45), do with Y what you whant
如果你想令自己不要忘記罪(45), 您可以創建其他參數其他項的值的成因,例如
Y is sin(45), MyTerm=funcresult(sin,45,Y), ... % then pass MyTerm wherever you whant or return it to the caller
MyTerm的消費者可以再統一
MyTerm= funcresult(F,X,Y),
,並同時獲取函數名(F = SIN),並用結果本身沿參數(X = 45)(Y)
你甚至可以
assert(funcresult(sin,X,Y))
,並提供一個數據庫對於所有已計算的函數值(不要忘記
:-dynamic(funcresult/3).
指令在這種情況下)。
還要注意,罪()通常接受弧度,沒有等級,所以罪(45)也許得到的東西,你不要指望
相關問題
- 1. 計算的sin(x)使用Fortran語言
- 2. Java:Calc x in sin(x)
- 3. haskell中的「sin sin 0.5」和「sin(sin 0.5)」有什麼區別?
- 4. 三角函數:sin(x)得到負值
- 5. maclaurin series for sin(x)
- 6. sin(x)的彙編代碼
- 7. 問題理解的sin(x)
- 8. Movement EquationDeltaHeight =(Sin(RunningTime + DeltaTime) - Sin(RunningTime));
- 9. Javascript sin函數問題
- 10. Gnuplot。奇函數擬合A *(sin(b * x)/(b * x))** 2
- 11. Ada sin(x)用泰勒級數計算
- 12. MATLAB符號表達式:如何強制答案爲sin(alpha)/ alpha
- 13. Fortran中exp(x)/ sin(x)的泰勒級數展開
- 14. 如何創建aa:d:b向量來創建並顯示「sin(0),sin(pi/n),sin((2 * pi)/ n),...,sin(2 * pi)]」
- 15. IndexOf和SIN
- 16. C++ Sin和Cos
- 17. Android ValueAnimator Sin wave
- 18. SIN波線,Y2
- 19. 爲什麼sin(0.2 * x + pi)是非周期函數?
- 20. 如何計算Sin(X)與陣列
- 21. FORTRAN中sin()的源代碼
- 22. 如何在matlab中的mod文件中編寫sin square x?
- 23. 如何檢查(加拿大)SIN是真正的SIN?
- 24. Sin pi:給出錯誤結果
- 25. 爲什麼在matlab中sin(pi)不準確但是sin(pi/2)是精確的?
- 26. 不使用math.h函數庫的sin函數
- 27. 在Java中製作自定義Sin()函數
- 28. 如何在xslt中計算三角函數sin&cos
- 29. Xcode圖計算器sin(X)cos(x)tan(x)
- 30. 用於sin(x)和cos(x)的Maclaurin系列超過最大值
這不是一個完全準確的答案。 '=/2'運算符將*統一*這兩個參數。它可以有比較的效果,但它也可以有分配的效果。'is/2'的用途是專門爲右側的算術表達式分配給左側的變量。 – lurker 2014-12-10 17:13:13