วุลฟรัม

**วุลฟรัม** (ในอดีตชื่อ **วุลฟรัม แมเทอแมทิกา** หรือ **แมเทอแมทิกา**) เป็นชุดโปรแกรมทางคณิตศาสตร์และวิทยาศาสตร์ที่สามารถทำการคำนวนได้ในหลากหลายขแนง และเป็นซอฟต์แวร์ลิขสิทธิ์ของบริษัท Wolfram Research ชุดโปรแกรมเวอร์ชัน 1.0 ได้วางจำหน่ายเมื่อ ค.ศ. 1988

## ชุดโปรแกรม วุลฟรัม
ชุดซอฟต์แวร์ *วุลฟรัม* ประกอบด้วย
*ระบบพีชคณิตทางคอมพิวเตอร์ (Computer algebra system) สำหรับการประมวลผลเชิงสัญลักษณ์ของสมการทั้งในแบบทั่วไปและแบบ อนุพันธ์

**[[ซอฟต์แวร์ทางตัวเลข]]* สำหรับการแก้หรือประเมินค่าเชิงตัวเลขของสมการ
* *[[เครื่องมือการแสดงภาพ]]* สำหรับการสร้างกราฟทั้งในรูปแบบสองมิติและสามมิติ
* *[[ภาษาโปรแกรม|ภาษาการเขียนโปรแกรม]]* ที่รวมเอาองค์ประกอบของการเขียนโปรแกรมแบบเชิงกระบวนการ (procedural), วัตถุ (object-oriented), ฟังก์ชัน (functional) และตามกฎ (rule-based) เข้าไว้ด้วยกัน

ผู้เขียนและผู้ก่อตั้งบริษัท Stephen Wolfram เริ่มต้นการพัฒนาเมื่อ ค.ศ. 1986 *วุลฟรัม* รุ่นแรกได้ถูกเผยแพร่เมื่อ ค.ศ. 1988 โดย Stephen Wolfram กล่าวว่าชื่อดั้งเดิมของ วุลฟรัม (*วุลฟรัม แมเทอแมทิกา*) ได้รับการเสนอจาก Steve Jobs

*วุลฟรัม* (วุลฟรัม แมเทอแมทิกา) 1.0 มีฟังก์ชันในตัวมากกว่า 500 ฟังก์ชัน ซึ่งยังคงมีอยู่ใน *วุลฟรัม* เวอร์ชัน 
13.0 ใน *วุลฟรัม* เวอร์ชัน 4.0 ที่เผยแพร่เมื่อ ค.ศ. 2000 มีฟังก์ชันมากกว่า 1000 ฟังก์ชัน ฟังก์ชันเหล่านี้ถูกบันทึกในคู่มือพิมพ์ที่มีน้ำหนักกว่า 3 กิโลกรัม และจำนวนหน้ามากกว่า 1500 หน้า

ในเวอร์ชัน 13.3 ที่เผยแพร่เมื่อ ค.ศ. 2023 มีฟังก์ชันมากกว่า 6000 ฟังก์ชัน ซึ่งไม่ได้มีการจัดทำเป็นคู่มือพิมพ์อีกต่อไป
นอกจากนี้ยังมีแนวคิดใหม่จำนวนมากที่ขยายขอบเขตการใช้งานของระบบ

เวอร์ชัน 14.1 ของวุลแฟรมได้ทำการเปลี่ยนชื่อจาก *วุลฟรัม แมเทอแมทิกา* มาเป็น *วุลแฟรม* ซึ่งรวบรวม วุลฟรัม แมเทอแมทิกา Wolfram|One and Finance Platfrom และ Wolfram|Alpha Notebook Edition ไว้ด้วยกัน เวอร์ชัน 14.1 นี้ได้รับการเผยแพร่ในปี ค.ศ. 2024

## การใช้งานและวิธีการทำงาน

*วุลฟรัม* ประกอบด้วย *[[Kernel]]* ที่ใช้ทำการคำนวณ และ *Notebook* ซึ่งเป็น ตัวเชื่อมประสานกับผู้ใช้แบบกราฟิก โปรแกรมจะถูกใช้งานผ่าน Notebook ซึ่งจัดรูปแบบการนำเข้าและส่งออก Notebook ยังมีฟังก์ชันของ การประมวลผลคำ
ที่สามารถใช้ในการแสดงและจัดการกราฟิก อีกหนึ่งคุณสมบัติพิเศษของ *วุลฟรัม* คือการสนับสนุนสัญลักษณ์ทางคณิตศาสตร์ที่หลากหลาย ซึ่งใน *วุลฟรัม* (แตกต่างจากภาษาการเขียนโปรแกรมคลาสสิก) สามารถใช้เครื่องหมายเหล่านี้รวมถึงชื่อตัวแปรได้ในทุกที่ของโปรแกรม

Kernel จะประมวลผล โค้ดโปรแกรม ทันทีหลังจากการป้อนข้อมูล (ในฐานะ Interpreter), ทำให้การเขียนโปรแกรมเป็นแบบโต้ตอบ ดังนั้นผลลัพธ์หรือข้อผิดพลาดในการเขียนโปรแกรมจึงสามารถเห็นได้ทันที หากมีการเรียกใช้โปรแกรมซ้ำหลายครั้ง เช่น ในการเรียกใช้โปรแกรมที่ไม่โต้ตอบ โปรแกรมจะถูก คอมไพล์ โดยอัตโนมัติ โค้ดโปรแกรมนั้นเป็นอิสระจากระบบปฏิบัติการ *วุลฟรัม* มีให้บริการสำหรับ Windows, Linux และ macOS, จนถึงเวอร์ชัน 6.0.3 ยังมีให้สำหรับ MS-DOS, NeXT, OS/2, Unix และ VMS

ตั้งแต่เวอร์ชัน 8 ฟีเจอร์ที่เรียกว่า *free form input* ถูกใส่เข้าไปใน *วุลฟรัม* ซึ่งช่วยให้ผู้ใช้สามารถใช้ภาษาอังกฤษ "ธรรมชาติ" แทนการป้อนไวยากรณ์ที่ถูกต้องสำหรับการคำนวณและคำสั่งอื่น ด้วยเหตุผลนี้จึงมีความจำเป็นต้องเชื่อมต่ออินเทอร์เน็ตตลอดการใช้งาน ตัวอย่างการใช้ภาษา กราฟของฟังก์ชันไซนัสที่มีการเติมสีแดงอ่อนและเส้นตารางเป็นจุด จะถูกสร้างขึ้นเมื่อป้อนคำสั่ง


Plot[Sin[x], {x, -6.6, 6.6},
  Filling -> Axis,
  FillingStyle -> Lighter[Red],
  GridLines -> Automatic,
  GridLinesStyle -> Dashed
]

หรือโดยใช้ *free form input*

 plot sin x with light red filling and dashed grid lines 
หลังจากที่ป้อนคำสั่งที่ใช้ *free form input* แล้ว สามารถแปลเป็นไวยากรณ์ (syntax) และแก้ไขใหม่ได้ เพื่อให้ยังคงมีความได้เปรียบจากไวยกรณ์แบบทั่วไป

*วุลฟรัม* มักถูกใช้ในทางวิทยาศาสตร์หรือเศรษฐศาสตร์ และยังมีการใช้งานในอุตสาหกรรมและธุรกิจ ดังนั้นธนาคารจึงใช้ *วุลฟรัม* ในการจำลองการพัฒนาราคาหุ้น, การประเมิน อนุพันธ์ทางเศรษฐศาสต์, การประเมินความเสี่ยง และอื่น ๆ ความแม่นยำของผลลัพธ์ (ทั้งเชิงวิเคราะห์และเชิงตัวเลข) จึงมีความจำเป็นมาก

นอกจาก เรขาคณิตพื้นฐาน, การอนุพันธ์, การคำนวณเชิงปริพันธ์, การแก้ สมการ, การจัดการแมทริกซ์ และ การคำนวณเชิงตัวเลข (ไม่มีข้อจำกัดในด้านความแม่นยำของเครื่องจักร) ยังมีฟังก์ชันพิเศษมากมาย เช่น จากสาขาของ เชิงผสม (combinatoric), ที่ได้ถูกนำมารวมไว้ ภาษาโปรแกรมของ *วุลฟรัม* มีการกำหนดประเภท (Type assignment) โดยอัตโนมัติ, การจัดการหน่วยความจำโดยอัตโนมัติ และเทคนิคการประเมินแบบรูปแบบ (*pattern matching*) ตั้งแต่ปลาย ค.ศ. 2013 ภาษาโปรแกรม *Wolfram Language* ได้ถูกจำแนกแยกจาก *วุลฟรัม*

หนึ่งในทางเลือกสำหรับหน้าต่าง (front end)  ใน วุลฟรัมคือ Wolfram Workbench—สภาพแวดล้อมการพัฒนาแบบ (IDE) ที่ใช้รากฐานจาก Eclipse ซึ่งถูกนำเสนอเมื่อ ค.ศ. 2006 Wolfram Workbench ให้เครื่องมือการพัฒนารหัสที่มีพื้นฐานจากวุลฟรัมรวมถึงการจัดการการแก้ไขโค้ด, การดีบัก, การวิเคราะห์ และการทดสอบ และยังมีปลั๊กอินสำหรับ IntelliJ-IDEA-based IDEs สำหรับการทำงานกับโค้ด Wolfram Language ซึ่งนอกเหนือจากการเน้นไวยากรณ์แล้ว ยังสามารถแยกวิเคราะห์, เติมตัวแปรท้องถิ่น (local variable) และฟังก์ชันที่กำหนดได้โดยอัตโนมัติ Kernal ของวุลฟรัมยังมีส่วนติดต่อคำสั่งแบบ command line อีกด้วย

## ภาษา
ภาษาในโปรแกรม *วุลฟรัม* (*[[Wolfram Language]]*) มีพื้นฐานมาจากภาษา Lisp ซึ่งเป็นภาษาโปรแกรมเชิงฟังก์ชัน นอกจากนี้วุลฟรัมยังอิงตามการจับคู่รูปแบบ (Pattern matching) เป็นหลัก (คล้ายเคลียงกับภาษา Haskell) สิ่งนี้ทำให้เกิดความสับสน อย่างยิ่งสำหรับผู้เริ่มต้น เนื่องจากรูปแบบ เช่น ตัวยึดรูปแบบ จะปรากฏขึ้นทันทีที่มีการทำงานกับฟังก์ชันต่าง ๆ วงเล็บเหลี่ยมที่ใช้เกือบตลอดเวลา ทำให้เกิดลักษณะโค้ดที่แตกต่างจากภาษาโปรแกรมทั่วไปเช่น C อย่างมาก สำหรับวุลฟรัมคำจำกัดความต่อไปนี้ไม่ใช่ฟังก์ชัน แต่เป็นกฎการแทนที่, สิ่งที่จะเกิดขึ้นกับตัวแปร "something" ใน `f[something]` หลังจากการประเมิณผลของ `something + something` คือการแทนที่ตัวแปร "something" ด้วย "something + something" หลังจากนี้, ซึ่งในที่นี้ `something` จะเป็นอะไรก็ได้:

```
f[x_] = x + x
```

อย่างไรก็ตามฟังก์ชันในแง่ของการเขียนโปรแกรมในรูปแบบของ แลมบ์ดา-แคลคูลัส ถูกสร้างขึ้นด้วยรูปแบบ `Function`:

`f = Function[x, x + x]`

ข้อดีของการจับคู่รูปแบบในพีชคณิตคอมพิวเตอร์คือกฎการแทนที่ที่ซับซ้อนสามารถเขียนให้กะทัดรัดได้ ฟังก์ชันที่กำหนดไว้ในส่วนต่าง ๆ สามารถกำหนดได้โดยใช้กฎการจับคู่ดังนี้:

```
g[x_ /; x < 7] = 2*x;
g[x_ /; x > 7] = 3*x;
```

ในตัวอย่างนี้ `g[3]` จะถูกประมวลผลด้วย `2*3=6`, แต่ `g[10]` จะถูกประมวลผลด้วย `3*10=30`

เช่นเดียวกับ Lisp *วุลฟรัม* จัดแสดงคุณสมบัติของความเป็น เนื้อเดียวกัน (Homoiconicity) ซึ่งหมายความว่าโค้ดวุลฟรัมและผลลัพธ์ของการคำนวณเป็นข้อมูลประเภทเดียวกัน จริง ๆ แล้วคำสั่งวุลฟรัมเช่น ผลลัพธ์นั้นเป็นแผนผังต้นไม้และการประเมินข้อมูลคือการแปลงต้นไม้ดังกล่าว ด้วยเหตุนี้ องค์ประกอบแรกของนิพจน์ วุลฟรัมจึงถูกเรียกว่า หัว (head) ในตัวอย่างต่อไปนี้ head คือคำสั่ง *plus*:

Plus[a,Sin[Times[b,c]]]

เมื่อแสดงเป็นต้นไม้ ผลลัพธ์จะมีลักษณะดังที่แสดงทางด้านขวา ส่วนหัว ของทรีคือฟังก์ชัน `Plus` วุลฟรัมรู้วิธีต่าง ๆ ในการแสดงอินพุต/เอาท์พุต การเขียนแบบธรรมชาตินี้สอดคล้องผลลัพธ์ที่อ่านง่ายกว่าคือ
`a + Sin[b*c]`

*วุลฟรัม* รองรับการประมวลผลพีชคณิตของคอมพิวเตอร์ซึ่งประมวลผล สัญลักษณ์ที่กำหนดเองในผลลัพธ์ดังกล่าว การใช้รายการกฎการแทนที่ นิพจน์เหล่านี้จะถูกแปลงเป็นแผนภูมิต้นไม้ในรูปแบบอื่น เมื่อประกอบในลักษณะนี้ ทำให้การคำนวณที่ซับซ้อนเป็นไปได้ ดังนั้น *วุลฟรัม* จึงเป็น การพิมพ์แบบไดนามิก ตรงกันข้ามกับภาษาอื่น ๆ ในวุลฟรัมบรรทัดที่ไม่สามารถประเมินได้โดยทั่วไปไม่ใช่ข้อผิดพลาด แต่ยังคงอยู่เป็นการคืนค่า (return) อย่างไรก็ตาม เอาต์พุตข้อผิดพลาดยังคงเป็นไปได้ เช่น เมื่อส่งอาร์กิวเมนต์ที่ไม่เหมาะสมไปยังฟังก์ชัน (built-in) เช่น `Plot`

โปรแกรมเมอร์ไม่ได้จำกัดอยู่เพียงแค่ กระบวนทัศน์การเขียนโปรแกรม (Programming paradigm)  แต่ยังสามารถโปรแกรมคำสั่งที่จำเป็นได้ ด้วยฟังก์ชันภายในนับหมื่นรายการ โปรแกรมจึงถูกเขียนได้หลากหลายและรวดเร็ว

## ตัวอย่างการใช้ภาษา
### ตัวอย่างที่ 1: จำนวนเฉพาะ
ด้วยฟังก์ชัน `Prime[k]` จำนวนเฉพาะลำดับที่ `k` จะถูกคำนวนและแสดงผล ยกตัวอย่างเช่น

: In[1]:= `Prime[15]`
: Out[1]= `47`

สังเกตุว่า คำนำหน้าที่เขียนโดยวุลฟรัมจะเป็นแบบอักษรขนาดเล็กและเป็นสีน้ำเงิน (กล่าวคือ ไม่ใช่ลิงก์)

รายการหมายเลขเฉพาะสามารถสร้างได้หลายวิธี เช่น รายการหมายเลขเฉพาะ 15 หลักแรกสามารถสร้างขึ้นด้วยวิธีดังนี้

แบบที่ 1: การใช้ฟังก์ชัน `Table`
: In[1]:= `Table[Prime[i],{i,15}]`
: Out[1]= `{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}`

แบบที่ 2: การใช้ฟังก์ชัน `Range`
: In[1]:= `Prime /@ Range[15]`
: Out[1]= `{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}`

แบบที่ 3: เก็บจำนวนเฉพาะในช่องข้อมูล
: In[1]:= `f[n_]:=Table[Prime[i],{i,n}]`
: In[2]:= `f[15]`
: Out[2]= `{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}`

แบบที่ 4: เลือกรายการจำนวนเฉพาะในบล็อกโดยใช้ระดับจำนวนเฉพาะ
: In[1]:= `tm = 2; p = {}; k = 1; Do[`

```
Do[If[t > 0,
    For[i = 1, (s = p[[i]]) <= t + 1, i++,
     If[GCD[k - s, 2 s - 1] != 1, Goto[l]]]]; p = AppendTo[p, k];
   Label[l]; k++, {4 (t + 1)}], {t, 0, tm}]; p *= 2; p--; p[[1]]++; p
```

: Out[1]=  `{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47}`
ตัวอย่างที่ 4 ลำเลียงวุลฟรัมให้เป็นภาษาโปรแกรม

มีฟังก์ชันจำนวนเฉพาะอื่น ๆ อีก เช่นฟังก์ชัน  `PrimePi[x]` จะส่งคืนจำนวนเฉพาะที่น้อยกว่าหรือเท่ากับ x
: In[1]:= `PrimePi[50]`
: Out[1}= `15`

คุณสามารถสอบถามได้ว่าจำนวนเต็ม n เป็นจำนวนเฉพาะหรือไม่โดยใช้ฟังก์ชัน `PrimeQ[n]` ตัวอย่างเช่น ค.ศ. 2017 เป็นจำนวนเฉพาะใช่หรือไม่
: n[1]:= `PrimeQ[2017]`
: Out[1]= `True`

2023 เป็นจำนวนเฉพาะใช่หรือไม่
: In[1]:= `PrimeQ[2023]`
: Out[1]= `False`

2023 มีตัวประกอบอะไรบ้าง
: In[1]:= `Divisors[2023]`
: Out[1]= `{1,7,17,119,289,2023}`

### ตัวอย่างที่ 2: การคำนวณค่าเฉลี่ย
ด้านล่างนี้เป็นสามวิธีในการคำนวณค่าเฉลี่ยของรายการค่าโดยใช้วุลฟรัมซึ่งในโหมดโต้ตอบจะกำหนดตัวเลขอินพุตและเอาต์พุตและส่งมอบผลลัพธ์โดยตรง

กำหนดรายการค่า:
: In[1]:= `myData = Range[8]`
: Out[1]= `{1, 2, 3, 4, 5, 6, 7, 8}`

ใช้ฟังก์ชันของวุลฟรัม:
: In[2]:= `Mean[myData]`
: Out[2]= `9/2`

ใช้การจัดการรายการ:
: In[3]:= `Plus@@myData / Length[myData]`
: Out[3]= `9/2`

ขั้นตอนการดำเนินการ:
: In[4]:= `summe = 0`
: Out[4]= `0`
: In[5]:= `For[ j=1,j <= Length[myData], j++, summe += myData ]`
: In[6]:= `summe / Length[myData]`
: Out[6]= `9/2`

### ตัวอย่างที่ 3: เมทริกซ์

*วุลฟรัม* มีฟังก์ชันต่าง ๆ มากมายสำหรับสร้างและจัดการเมทริกซ์ทั้งในแบบ  Hilbert เมทริกซ์ หรือ Hankel เมทริกซ์ องค์ประกอบเมทริกซ์สามารถเป็นได้ทั้งตัวเลขและสัญลักษณ์ ในตัวอย่างด้านล่างได้มีการลองใช้สัญลักษณ์และตั้งชื่อเมทริกซ์ว่า `FeldX` องค์ประกอบเมทริกซ์จะถูกป้อนทีละบรรทัดในรูปแบบพิเศษด้วยฟังก์ชัน `MatrixForm` เมทริกซ์จะแสดงในรูปแบบปกติ:

:  In[1]:=  `MatrixForm [FeldX=]`
:  Out[1]//MatrixForm= 
::::
\begin{pmatrix}
   a & b & 0  \\
   c & a & b \\
   0 & c & a  \\
\end{pmatrix}


thumb|521x521px|ภาพหน้าจอของโปรแกรม วุลฟรัม แมเทอแมทิกา เวอร์ชัน 3.0 แสดงผลเมทริกซ์ วงเล็บสีน้ำเงินทางด้านขวาเรียกว่าเซลล์
เมทริกซ์นี้เป็นเมทริกซ์  Toeplitz สามเหลี่ยมมุมฉาก สำหรับการ จัดการเมทริกซ์ จุดแบบธรรมดา (.) จะถูกวางไว้ระหว่างชื่อฟิลด์  กับตัวมันเองจะมีลักษณะไวยกรณ์เช่นนี้:

:  In[2]:=  `MatrixForm [FeldX.FeldX]`
:  Out[2]//MatrixForm= 
::::
\begin{pmatrix}
   a^2+bc & 2ab    & b^2  \\
   2ac    & a^2+bc & 2ab \\
   c^2    & 2ac    & a^2+bc  \\
\end{pmatrix}


ทรานสโพส ของเมทริกซ์ `FeldX` ถูกสร้างขึ้นด้วยวิธีนี้:

:  In[3]:=  `MatrixForm [Transpose[FeldX]]`
:  Out[3]//MatrixForm= 
::::
\begin{pmatrix}
   a & c & 0  \\
   b & a & c \\
   0 & b & a  \\
\end{pmatrix}


ดีเทอร์มิแนนต์ ของเมทริกซ์ `FeldX` คำนวณโดยใช้ฟังก์ชัน`Det[FeldX]`:
:  In[4]:=  `Det[FeldX]`
:  Out[4]=  `a³-2abc`

ส่วนผกผันของเมทริกซ์ `FeldX` จะได้มาด้วยฟังก์ชัน `Inverse[FeldX]`:

:  In[5]:=  `MatrixForm [Inverse[FeldX]]`
:  Out[5]//MatrixForm= 
::::
\frac {1} {a^3-2abc}
\begin{pmatrix}
   a^2-bc & -ab    & b^2    \\
   -ac    & a^2    & -ab    \\
   c^2    & -ac    & a^2-bc \\
\end{pmatrix}

:

ค่าลักษณะเฉพาะ (eigen value) จะมาพร้อมกับฟังก์ชัน `Eigenvalues[FeldX]`:

:  In[6]:=  `Eigenvalues[FeldX]`
:  Out[6]=  `{a, a – <math> \mathsf{ \sqrt 2 \; \sqrt b \; \sqrt c }</math>,  <math> \mathsf{ a + \sqrt 2 \; \sqrt b \; \sqrt c }</math>}`

ถ้า a, b และ c เป็นจำนวนจริง และสัญลักษณ์ของ a และ b ต่างกัน, ค่าลักษณะเฉพาะทั้งสองจะเป็นจำนวนจินตภาพ และทั้งสองค่าจะเป็น สังยุคของจำนวนเชิงซ้อนของกันและกัน ในทำนองเดียวกัน สามารถคำนวณเวกเตอร์ลักษณะเฉพาะได้โดยใช้ฟังก์ชัน  `Eigenvectors[FeldX]`

### ตัวอย่างที่ 4: การวาดรูปแบบพลาโทนิก

*[[ทรงตันเพลโต|รูปแบบพลาโทนิก]]* เป็น ทรงหลายหน้า ซึ่งล้อมรอบด้วยรูปทรงหลายหน้าปรกติ มีการจำแนกยู่ห้ารูปแบบ (จัตุรมุข, ลูกบาศก์, ทรงแปดหน้า, สิบสองหน้า, ไอโคซาฮีดรอน) ในการวาดสิ่งเหล่านี้วุลฟรัมจะรวมฟังก์ชันไว้ด้วย *Polyhedron*ซึ่งต้องระบุชื่อภาษาอังกฤษของรูปทรงหลายเหลี่ยมเป็นอาร์กิวเมนต์ มีฟังก์ชันอื่น ๆ ที่เกี่ยวข้อง เช่น ฟังก์ชัน Truncate ซึ่งสร้างรูปทรงหลายเหลี่ยมที่ถูกตัดทอน (จัตุรมุขที่ถูกตัดทอน, hexahedron ที่ถูกตัดทอน, ทรงแปดหน้าที่ถูกตัดทอน, สิบสองหน้าที่ถูกตัดทอน, icosahedron ที่ถูกตัดทอน), ซึ่งถูกสร้างขึ้นโดยการตัดมุม

ก่อนที่จะเข้าสู่ฟังก์ชันแรก จะต้องโหลดแพ็คเกจ Polyhedra ก่อน

: In[1]:= `<< Graphics`Polyhedra``
: In[2]:= `Show[Polyhedron[Tetrahedron]]`

จากนั้นสามารถวาดรูปทรงหลายเหลี่ยมปกติอื่น ๆ และสัดส่วนของพวกมันได้ทีละอันตามที่แสดงในภาพ


Show[Polyhedron[Cube]]
Show[Polyhedron[Octahedron]]
Show[Polyhedron[Dodecahedron]]
Show[Polyhedron[Icosahedron]]
Show[Truncate[Polyhedron[Tetrahedron]]]
Show[Truncate[Polyhedron[Cube]]]
Show[Truncate[Polyhedron[Octahedron]]]
Show[Truncate[Polyhedron[Dodecahedron]]]
Show[Truncate[Polyhedron[Icosahedron]]]


ในกรณีนี้ การใช้วุลฟรัมเป็นเรื่องง่ายมาก  สำหรับตัวอย่างนี้ใช้ วุลฟรัม แมเทอแมทิกา เวอร์ชัน 3.0 (1996) ในเวอร์ชัน 12.0 (2019) ไวยากรณ์ของฟังก์ชันรูปทรงหลายเหลี่ยมมีการเปลี่ยนแปลง

## ประวัติเวอร์ชันและวันที่เผยแพร่
การพัฒนา *วุลฟรัม* จากรุ่นสู่รุ่นเป็นแบบไดนามิกมากจนดูเหมือนเป็นไปไม่ได้ที่จะรวบรวมนวัตกรรม แม้แต่สิ่งที่สำคัญที่สุดในตาราง คุณสามารถดูภาพรวมได้จากเว็บไซต์ประวัติของ เวอร์ชัน วุลฟรัม อย่างสั้น

## การเชื่อมต่อกับระบบและภาษาอื่น ๆ
การสื่อสารกับแอปพลิเคชันและบริการอื่นสามารถเกิดขึ้นได้โดยใช้โปรโตคอลที่เรียกว่า Wolfram Symbolic Transfer Protocol (WSTP) WSTP ช่วยให้สามารถสื่อสารระหว่างเคอร์เนลวุลฟรัมและฟรอนต์เอนด์ และจัดให้มีอินเทอร์เฟซทั่วไประหว่างเคอร์เนลและแอปพลิเคชันอื่น ๆ ซึ่งสามารถตั้งโปรแกรมเป็นภาษาอื่นได้ วุลฟรัม มีอินเทอร์เฟซสำหรับ Haskell, แอปเปิ้ลสคริปต์,แร็กเกต, วิชวลเบสิก, ไพทอน และ โคลจูเร่ (Clojure)

## ปัญหา
เมื่อ ค.ศ. 2014 นักคณิตศาสตร์สามคนตีพิมพ์ว่าวุลฟรัมให้ผลลัพธ์ที่ไม่ถูกต้องเมื่อคำนวณดีเทอร์มิแนนต์ของเมทริกซ์บางตัวที่มีจำนวนเต็มค่อนข้างมาก (10,000 หลัก) ข้อผิดพลาดนี้ได้รับการรายงานเมื่อ ค.ศ. 2013 และไม่ได้รับการแก้ไขหลังจากผ่านไปนานกว่าหนึ่งปี อย่างไรก็ตาม การนำเสนอของ Wolfram Research บางส่วนขัดแย้งกับข้อมูลนี้และทำให้เกิดข้อผิดพลาดใหม่ ข้อผิดพลาดในการคำนวณ (CASE:303438) ได้รับการแก้ไขแล้วตั้งแต่เวอร์ชัน 11.1 และไม่มีอีกต่อไปในเวอร์ชั่นปัจจุบัน

## ดูเพิ่มเติม
* วุลแฟรม อัลฟ่า
* รายชื่อซอฟต์แวร์ทางสถิติ
* การคำนวนทางวิทยาศาสตร์
* Sage (Software), ทางเลือกโอเพนซอร์ส

## หนังสือและบทความ
* Hans Benker: *MATHEMATICA kompakt: Mathematische Problemlösungen für Ingenieure, Mathematiker und Naturwissenschaftler.* Springer, Berlin / Heidelberg 2016, ISBN 978-3-662-49610-7.
* Stephen Wolfram: *An Elementary Introduction to the Wolfram Language.* Wolfram Media, Champaign IL 2015, ISBN 978-1-944183-00-4.
* Knut Lorenzen: *Einführung in Mathematica: Berücksichtigt die kostenlose Version 10 für den Raspberry Pi.* mitp Verlag, 2014, ISBN 978-3-8266-9666-4.
* Axel Kilian: *Programmieren mit Wolfram Mathematica.* Springer, Berlin / Heidelberg 2009, ISBN 978-3-642-04671-1.
* Michael Trott: *The Mathematica GuideBook for Symbolics.* Springer, 2006.
* Michael Trott: *The Mathematica GuideBook for Programming.* Springer, 2004.
* Michael Trott: *The Mathematica GuideBook for Numerics.* Springer, 2006.
* Michael Trott: *The Mathematica GuideBook for Graphics.* Springer, 2004.
* 
* 
* 

## อ้างอิง

## แหล่งข้อมูลอื่น

* Wolfram Research, Inc.
* Offizielle Mathematica-Homepage des deutschen Partners
* Wolfram Alpha (บริการอินเทอร์เน็ตที่ใช้ Mathematica จาก Wolfram Research)
* Der Mathematica Integrator
* Mathematica auf dem Raspberry Pi. Mathematica เวอร์ชันฟรีสำหรับการใช้ที่ไม่ใช่เชิงพาณิชย์

หมวดหมู่:ซอฟต์แวร์ในปี พ.ศ. 2531