ผลต่างระหว่างรุ่นของ "กนู อ็อกเตฟ"

จากวิกิพีเดีย สารานุกรมเสรี
เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
BotKung (คุย | ส่วนร่วม)
เก็บกวาดบทความด้วยบอต
Jothefiredragon (คุย | ส่วนร่วม)
สร้างขึ้นโดยการแปลหน้า "GNU Octave"
บรรทัด 1: บรรทัด 1:
'''GNU Octave''' เป็น ภาษาการเขียนโปรแกรมทางวิทยาศาสตร์ สำหรับ การคำนวณทางวิทยาศาสตร์ และ [[การวิเคราะห์เชิงตัวเลข|การคำนวณเชิงตัวเลข]] อ็อกเทฟช่วยในการแก้ปัญหาเชิงเส้นและไม่เชิงเส้นในเชิงตัวเลข และสำหรับดำเนินการทดลองเชิงตัวเลขอื่นๆ โดยใช้ภาษาที่ส่วนใหญ่เข้ากันได้กับ [[แมตแล็บ|MATLAB]] นอกจากนี้ยังอาจใช้เป็นภาษา [[การประมวลผลแบบกลุ่ม|ที่เน้นแบบแบตช์]] ด้วย ในฐานะที่เป็นส่วนหนึ่งของ โครงการ GNU ซอฟต์แวร์นี้เป็น [[ซอฟต์แวร์เสรี]] ภายใต้เงื่อนไขของ [[สัญญาอนุญาตสาธารณะทั่วไปของกนู|GNU General Public License]]
{{Infobox software

| name = กนู อ็อกเตฟ
== ประวัติ ==
| logo = [[ไฟล์:Gnu-octave-logo.svg|100px]]
โครงการนี้เกิดขึ้นประมาณปี พ.ศ. 2531 <ref name="Octave_about">{{Cite web|title=About GNU Octave|url=https://www.gnu.org/software/octave/about.html|access-date=1 May 2018|website=www.gnu.org|publisher=GNU}}</ref> ในตอนแรกตั้งใจที่จะใช้ร่วมกับหลักสูตรการออกแบบเครื่องปฏิกรณ์เคมี การพัฒนาเต็มรูปแบบเริ่มต้นโดย John W. Eaton ในปี 1992 อัลฟ่ารุ่นแรกเริ่มตั้งแต่วันที่ 4 มกราคม พ.ศ. 2536 และในวันที่ 17 กุมภาพันธ์ พ.ศ. 2537 เวอร์ชัน 1.0 ได้รับการเผยแพร่ เวอร์ชัน 8.4.0 เปิดตัวเมื่อวันที่ 5 พฤศจิกายน 2023 <ref name=":0">{{Cite web|date=2023-11-05|title=GNU Octave 8.4.0 Released|url=https://octave.org/news/release/2023/11/05/octave-8.4.0-released.html|access-date=2023-11-20|website=octave.org|language=en}}</ref>
| screenshot = GNUOctave430.png

| caption = GNU Octave 4.3.0+ running on [[Linux]]
โปรแกรมนี้ตั้งชื่อตาม Octave Levenspiel อดีตศาสตราจารย์ของผู้เขียนหลัก Levenspiel เป็นที่รู้จักจากความสามารถของเขาในการ [[การคำนวนหลังจดหมาย|คำนวณแบบ back-of-envelope]] อย่างรวดเร็ว <ref name="about">{{Cite web|last=Eaton|first=John W|title=About Octave|url=https://www.gnu.org/software/octave/about.html|access-date=2009-06-28}}</ref>
| developer = John W. Eaton และอีกหลายคน<ref>{{cite web|title=contributors.in|author=Rik|url=http://hg.savannah.gnu.org/hgweb/octave/file/tip/doc/interpreter/contributors.in|accessdate=14 June 2015|date=10 June 2015}}</ref>

| released = {{Start date and age|1988}}
== ประวัติการพัฒนา ==
| latest release version = 5.2.0
{| class="wikitable"
| latest release date = {{Start date and age|2020|02|03|df=yes}}<!-- <ref>{{cite web|title=GNU Octave 5.1.0 Released|date=1 March 2019 |url=https://www.gnu.org/software/octave/news/release/2019/03/01/octave-5.1-released.html}}</ref> -->
!Time
| programming language = [[ภาษาซี]], [[ภาษาซีพลัสพลัส]], [[ภาษาฟอร์แทรน]]<ref name="octave_building">{{cite web|title=Building - Octave|url=https://wiki.octave.org/Building|website=wiki.octave.org|publisher=GNU|accessdate=1 May 2018|language=en}}</ref>
!Action
| operating system = [[ลินุกซ์]], [[แมคโอเอส]], [[ไมโครซอฟท์ วินโดวส์|วินโดวส์]], [[เบิร์กลีย์ซอฟต์แวร์ดิสทริบิวชัน]]
|-
| platform = <!--List them all-->
| style="text-align: right; white-space: nowrap;" |1988/1989
| language count = 19
|1st discussions (Book and Software)
| language footnote = {{Citation needed|date=January 2016}}
|-
| genre = [[การวิเคราะห์เชิงตัวเลข]]
| style="text-align: right; white-space: nowrap;" |February 1992
| license = [[สัญญาอนุญาตสาธารณะทั่วไปของกนู]]
|Start of Development
| website = {{URL|https://gnu.org/software/octave/}}
|-
| style="text-align: right; white-space: nowrap;" |January 1993
|News in Web (Version 0.60)
|-
| style="text-align: right; white-space: nowrap;" |February 1994
|1st Publication (Version 1.0.0 to 1.1.1)<ref>{{Cite web|title=GNU Octave Version 1|url=https://www.gnu.org/software/octave/NEWS-1.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |December 1996
|2nd Publication (Version 2.0.x) with Windows Port ([[ซิกวิน|Cygwin]])<ref>{{Cite web|title=GNU Octave Version 2|url=https://www.gnu.org/software/octave/NEWS-2.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |March 1998
|Version 2.1
|-
| style="text-align: right; white-space: nowrap;" |November 2004
|Version 2.9 (DEV Version of 3.0)<ref>{{Cite web|date=31 December 2012|title=News Archive|url=https://www.gnu.org/software/octave/news/2012/12/31/news-archive.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |December 2007
|Publication of Version 3.0 (Milestone)<ref>{{Cite web|title=GNU Octave Version 3|url=https://www.gnu.org/software/octave/NEWS-3.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |June 2009
|Publication of Version 3.2 (Milestone)<ref>{{Cite web|title=GNU Octave Version 3.2|url=https://www.gnu.org/software/octave/NEWS-3.2.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |8 February 2011
|Version 3.4.0 (Milestone)<ref>{{Cite web|title=GNU Octave Version 3.4|url=https://www.gnu.org/software/octave/NEWS-3.4.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |22 February 2012
|Publication of Octave 3.6.1 (Milestone)<ref>{{Cite web|title=GNU Octave Version 3.6|url=https://www.gnu.org/software/octave/NEWS-3.6.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=21 February 2013|title=GNU Octave 3.6.4 Released|url=https://www.gnu.org/software/octave/news/release/2013/02/21/octave-3.6.4-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |31 December 2013
|Publication of Octave 3.8.0 (experimental GUI)<ref name="auto1">{{Cite web|title=GNU Octave Version 3.8|url=https://www.gnu.org/software/octave/NEWS-3.8.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=31 December 2013|title=GNU Octave 3.8.0 Released|url=https://www.gnu.org/software/octave/news/release/2013/12/31/octave-3.8.0-released.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=4 March 2014|title=GNU Octave 3.8.1 Released|url=https://www.gnu.org/software/octave/news/release/2014/03/04/octave-3.8.1-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |29 May 2015
|Version 4.0.0 (stable GUI and new Syntax for [[การเขียนโปรแกรมเชิงวัตถุ|OOP]])<ref name="auto">{{Cite web|title=GNU Octave Version 4.0|url=https://www.gnu.org/software/octave/NEWS-4.0.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=29 May 2015|title=GNU Octave 4.0.0 Released|url=https://www.gnu.org/software/octave/news/release/2015/05/29/octave-4.0.0-released.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=23 March 2016|title=GNU Octave 4.0.1 Released|url=https://www.gnu.org/software/octave/news/release/2016/03/23/octave-4.0.1-released.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=2 July 2016|title=GNU Octave 4.0.3 Released|url=https://www.gnu.org/software/octave/news/release/2016/07/02/octave-4.0.3-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |14 November 2016
|Version 4.2.0 (gnuplot 4.4+)<ref>{{Cite web|date=Nov 14, 2016|title=GNU Octave 4.2.0 Released|url=https://www.gnu.org/software/octave/news/release/2016/11/14/octave-4.2.0-released.html}}</ref><ref>{{Cite web|title=GNU Octave Version 4.2|url=https://www.gnu.org/software/octave/NEWS-4.2.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=24 February 2017|title=GNU Octave 4.2.1 Released|url=https://www.gnu.org/software/octave/news/release/2017/02/24/octave-4.2.1-released.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=13 March 2018|title=GNU Octave 4.2.2 Released|url=https://www.gnu.org/software/octave/news/release/2018/03/13/octave-4.2.2-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |30 April 2018
|Version 4.4.0 (new Goal for GUI QT Toolkit, the FLTK toolkit is not deprecated and there is no schedule for its removal - while no longer prioritized)<ref>{{Cite web|title=GNU Octave Version 4.4|url=https://www.gnu.org/software/octave/NEWS-4.4.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=30 April 2018|title=GNU Octave 4.4.0 Released|url=https://www.gnu.org/software/octave/news/release/2018/04/30/octave-4.4.0-released.html|website=www.gnu.org}}</ref><ref>{{Cite web|date=9 August 2018|title=GNU Octave 4.4.1 Released|url=https://www.gnu.org/software/octave/news/release/2018/08/09/octave-4.4.1-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |1 March 2019
|Publication of Octave 5.1.0 (QT5 preferred, Qt 4.8 minimum), hiDpi support<ref>{{Cite web|title=GNU Octave Version 5|url=https://www.gnu.org/software/octave/NEWS-5.1.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |31 January 2020
|Publication of Octave 5.2.0 (QT5 preferred)<ref>{{Cite web|date=31 January 2020|title=GNU Octave 5.2.0 Released|url=https://www.gnu.org/software/octave/news/release/2020/01/31/octave-5.2.0-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |26 November 2020
|Publication of Octave 6.1.0 (QT5 preferred, Qt 4.x deprecated for remove in 7)<ref>{{Cite web|date=26 November 2020|title=GNU Octave 6.1.0 Released|url=https://www.gnu.org/software/octave/news/release/2020/11/26/octave-6.1.0-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |20 February 2021
|Publication of Octave 6.2.0 (QT5 preferred), Bugfix, improved matlab syntax support<ref>{{Cite web|date=20 February 2021|title=GNU Octave 6.2.0 Released|url=https://www.gnu.org/software/octave/news/release/2021/02/20/octave-6.2.0-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |6 April 2022
|Publication of Octave 7.1.0 (QT5 preferred), improved graphics backend and matlab compatibility<ref>{{Cite web|date=6 April 2022|title=GNU Octave 7.1.0 Released|url=https://www.gnu.org/software/octave/news/release/2022/04/06/octave-7.1.0-released.html|website=www.gnu.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |28 July 2022
|Publication of Octave 7.2.0 (QT5 preferred), bug fixing release<ref>{{Cite web|date=28 July 2022|title=GNU Octave 7.2.0 Released|url=https://octave.org/news/release/2022/07/28/octave-7.2.0-released.html|website=octave.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |2 Nov 2022
|Publication of Octave 7.3.0 (QT5 preferred), bug fixing release<ref>{{Cite web|date=2 November 2022|title=GNU Octave 7.3.0 Released|url=https://octave.org/news/release/2022/11/02/octave-7.3.0-released.html|website=octave.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |7 March 2023
|Publication of Octave 8.1.0, improved graphics backend and matlab compatibility<ref>{{Cite web|date=7 March 2023|title=GNU Octave 8.1.0 Released|url=https://octave.org/news/release/2023/03/07/octave-8.1.0-released.html|website=octave.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |13 April 2023
|Publication of Octave 8.2.0, bug fixing release<ref>{{Cite web|date=13 April 2023|title=GNU Octave 8.2.0 Released|url=https://octave.org/news/release/2023/04/13/octave-8.2.0-released.html|website=octave.org}}</ref>
|-
| style="text-align: right; white-space: nowrap;" |8 August 2023
|Publication of Octave 8.3.0, bug fixing release<ref>{{Cite web|date=8 August 2023|title=GNU Octave 8.3.0 Released|url=https://octave.org/news/release/2023/08/08/octave-8.3.0-released.html|website=octave.org}}</ref>
|-
|5 November 2023
|Publication of Octave 8.4.0, bug fixing release<ref name=":0">{{Cite web|date=2023-11-05|title=GNU Octave 8.4.0 Released|url=https://octave.org/news/release/2023/11/05/octave-8.4.0-released.html|access-date=2023-11-20|website=octave.org|language=en}}<cite class="citation web cs1" data-ve-ignore="true">[https://octave.org/news/release/2023/11/05/octave-8.4.0-released.html "GNU Octave 8.4.0 Released"]. </cite></ref>
|}

== การพัฒนา ==
นอกเหนือจากการใช้บนเดสก์ท็อปสำหรับการคำนวณทางวิทยาศาสตร์ส่วนบุคคลแล้ว Octave ยังใช้ในด้านวิชาการและอุตสาหกรรมอีกด้วย ตัวอย่างเช่น Octave ถูกใช้บนคอมพิวเตอร์[[การคำนวณแบบขนาน|คู่ขนาน]] ขนาดใหญ่ที่ [[ศูนย์ซูเปอร์คอมพิวเตอร์พิตส์เบิร์ก|Pittsburgh Supercomputing Center]] เพื่อค้นหาช่องโหว่ที่เกี่ยวข้องกับการเดาหมายเลขประกันสังคม <ref>{{Cite web|date=8 July 2009|title=Social Security Number Vulnerability Findings Relied on Supercomputing|url=http://www.hpcwire.com/industry/government/Social-Security-Number-Vulnerability-Findings-Relied-on-Supercomputing-50292227.html|archive-url=https://web.archive.org/web/20120229220547/http://www.hpcwire.com/hpcwire/2009-07-08/social_security_number_vulnerability_findings_relied_on_supercomputing.html|archive-date=29 February 2012}}</ref>

การเร่งความเร็วด้วย [[โอเพนซีแอล|OpenCL]] หรือ [[CUDA]] ก็สามารถทำได้ด้วยการใช้ GPU <ref>{{Cite web|date=June 5, 2014|title=Drop-in Acceleration of GNU Octave|url=https://developer.nvidia.com/blog/drop-in-acceleration-gnu-octave/|website=NVIDIA Developer Blog}}</ref>

== รายละเอียดทางเทคนิค ==

* อ็อกเทฟเขียนด้วย [[ภาษาซีพลัสพลัส|ภาษา C++]] โดยใช้ ไลบรารี่มาตรฐาน C++
* อ็อกเทฟใช้ [[อินเทอร์พรีเตอร์|ล่าม]] เพื่อรันภาษาสคริปต์อ็อกเทฟ
* อ็อกเทฟสามารถขยายได้โดยใช้โมดูลที่สามารถโหลดได้แบบไดนามิก
* ตัวแปลระดับแปดเสียงมีกลไกกราฟิกที่ใช้ [[โอเพนจีแอล|OpenGL]] เพื่อสร้างแปลง กราฟ และแผนภูมิ และบันทึกหรือพิมพ์ หรืออีกทางหนึ่ง [[นิวพลอต|gnuplot]] สามารถใช้เพื่อจุดประสงค์เดียวกันได้
* อ็อกเทฟมี [[ส่วนต่อประสานกราฟิกกับผู้ใช้]] (GUI) นอกเหนือจาก ส่วนต่อประสานบรรทัดคำสั่ง (CLI) แบบดั้งเดิม ดู [[กนู อ็อกเตฟ|#อินเทอร์เฟซผู้ใช้]] สำหรับรายละเอียด

== ภาษาอ็อกเทฟ ==
ภาษาอ็อกเทฟเป็นภาษาการเขียนโปรแกรมแบบตีความ มันเป็นภาษา[[การเขียนโปรแกรมแบบมีโครงสร้าง|โปรแกรมที่มีโครงสร้าง]] (คล้ายกับ [[ภาษาซี|C]] ) และสนับสนุนฟังก์ชัน[[ไลบรารีมาตรฐาน C|คลังมาตรฐาน C]] ทั่วไปจำนวนมาก และการเรียกและฟังก์ชันของระบบ [[พอซิกส์|UNIX]] บางอย่าง <ref>{{Cite web|date=14 November 2008|title=GNU Octave - Controlling subprocesses|url=http://www.network-theory.co.uk/docs/octave3/octave_269.html|url-status=dead|archive-url=https://web.archive.org/web/20090107005339/http://www.network-theory.co.uk/docs/octave3/octave_269.html|archive-date=7 January 2009|access-date=2009-01-28}}</ref> อย่างไรก็ตาม มันไม่สนับสนุนการส่งผ่านอาร์กิวเมนต์โดยการอ้างอิง <ref>{{Cite web|title=GNU Octave|url=http://www.delorie.com/gnu/docs/octave/octave_105.html|access-date=2009-01-28}}</ref> แม้ว่าอาร์กิวเมนต์ของฟังก์ชันเป็น [[คัดลอกเมื่อเขียน|แบบคัดลอกเมื่อเขียน]] เพื่อหลีกเลี่ยงการทำซ้ำที่ไม่จำเป็น

โปรแกรมอ็อกเทฟประกอบด้วยรายการการเรียกใช้ฟังก์ชันหรือ [[ภาษาสคริปต์|สคริปต์]] ไวยากรณ์เป็นแบบ [[การเขียนโปรแกรมแบบอาร์เรย์|เมทริกซ์]] และมีฟังก์ชันต่างๆ สำหรับการดำเนินการเมทริกซ์ รองรับ [[โครงสร้างข้อมูล]] ที่หลากหลายและอนุญาต [[การเขียนโปรแกรมเชิงวัตถุ]] <ref>{{Cite web|title=Summary of important user-visible changes for version 3.2|url=https://www.gnu.org/software/octave/NEWS-3.2.html|access-date=2012-01-05}}</ref>

ไวยากรณ์ของมันคล้ายกับ MATLAB มากและการเขียนโปรแกรมอย่างระมัดระวังของสคริปต์จะช่วยให้สามารถทำงานได้ทั้งบน Octave และ MATLAB <ref>{{Cite web|title=FAQ: MATLAB compatibility|url=http://www.octave.org/wiki/index.php?title=FAQ#Porting_programs_from_Matlab_to_Octave|url-status=dead|archive-url=https://web.archive.org/web/20111121043348/http://octave.org/wiki/index.php?title=FAQ#Porting_programs_from_Matlab_to_Octave|archive-date=2011-11-21|access-date=2009-04-04}}</ref>

เนื่องจากอ็อกเทฟมีให้บริการภายใต้ [[สัญญาอนุญาตสาธารณะทั่วไปของกนู|สัญญาอนุญาตสาธารณะทั่วไปของ GNU]] จึงอาจมีการเปลี่ยนแปลง คัดลอก และใช้งานได้อย่างอิสระ <ref name="about">{{Cite web|last=Eaton|first=John W|title=About Octave|url=https://www.gnu.org/software/octave/about.html|access-date=2009-06-28}}<cite class="citation web cs1" data-ve-ignore="true" id="CITEREFEaton">Eaton, John W. [https://www.gnu.org/software/octave/about.html "About Octave"]<span class="reference-accessdate">. </span></cite></ref> โปรแกรมนี้ทำงานบน [[ไมโครซอฟท์ วินโดวส์|Microsoft Windows]] และ [[ระบบปฏิบัติการ]] ที่คล้าย [[ยูนิกซ์|Unix]] และ [[เหมือนยูนิกซ์|Unix]] ส่วนใหญ่ รวมถึง [[ลินุกซ์|Linux]], [[แอนดรอยด์ (ระบบปฏิบัติการ)|Android]] และ [[แมคโอเอส|macOS]] <ref>{{Cite web|title=FAQ: Getting Octave|url=http://www.octave.org/wiki/index.php?title=FAQ#On_what_platforms_does_Octave_run.3F|url-status=dead|archive-url=https://web.archive.org/web/20111121043348/http://octave.org/wiki/index.php?title=FAQ#On_what_platforms_does_Octave_run.3F|archive-date=2011-11-21|access-date=2009-04-04}}</ref> <ref>{{Cite web|title=Top (GNU Octave (version 6.3.0))|url=https://octave.org/doc/v6.3.0/|website=octave.org}}</ref> <ref>{{Cite web|title=Octave for Android - Octave|url=https://wiki.octave.org/Octave_for_Android|access-date=2021-08-23|website=wiki.octave.org}}</ref>

== คุณสมบัติเด่น ==

=== การกรอกคำสั่งและชื่อตัวแปร ===
การพิมพ์อักขระ TAB บนบรรทัดคำสั่งทำให้ Octave พยายามกรอกตัวแปร ฟังก์ชัน และชื่อไฟล์ให้สมบูรณ์ (คล้ายกับ การเสร็จสิ้นแท็บ ของ [[แบช|Bash]] ) อ็อกเทฟใช้ข้อความหน้าเคอร์เซอร์เป็นส่วนเริ่มต้นของชื่อเพื่อเติมให้สมบูรณ์ <ref>{{Cite web|last=Eaton|first=John W.|title=Letting Readline Type For You|url=https://www.gnu.org/software/octave/doc/interpreter/Commands-For-Completion.html#Commands-For-Completion|website=GNU Octave Reference Manual}}</ref>

=== ประวัติคำสั่ง ===
เมื่อทำงานแบบโต้ตอบ Octave จะบันทึกคำสั่งที่พิมพ์ในบัฟเฟอร์ภายในเพื่อให้สามารถเรียกคืนและแก้ไขได้

=== โครงสร้างข้อมูล ===
อ็อกเทฟมีการรองรับจำนวนจำกัดสำหรับการจัดระเบียบข้อมูลในโครงสร้าง ในตัวอย่างนี้ เราเห็นโครงสร้าง{{Mono|x}} มีองค์ประกอบ{{Mono|a}}{{Mono|b}}{{Mono|c}}, (จำนวนเต็ม อาร์เรย์ และสตริง ตามลำดับ):<syntaxhighlight lang="octave">
octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
octave:2> x.a
ans = 1
octave:3> x.b
ans =

1 2
3 4

octave:4> x.c
ans = string
octave:5> x
x =

scalar structure containing the fields:

a = 1
b =

1 2
3 4

c = string
</syntaxhighlight>

=== ตัวดำเนินการบูลีนลัดวงจร ===
อ็อกเทฟ <code>&&</code> และ <code>||</code> ตัวดำเนินการ เชิงตรรกะได้รับการประเมินในลักษณะ ลัดวงจร (เช่น ตัวดำเนินการที่สอดคล้องกันในภาษา [[ภาษาซี|C]] ) ตรงกันข้ามกับตัวดำเนินการแบบองค์ประกอบต่อองค์ประกอบ <code>&</code> และ <code>|</code> .

=== ตัวดำเนินการเพิ่มและลด ===
{{หลัก|Increment and decrement operators}}
อ็อกเทฟประกอบด้วย ตัวดำเนินการการเพิ่มและลดค่า แบบ C <code>++</code> และ <code>--</code> ทั้งในแบบฟอร์มคำนำหน้าและคำต่อท้าย อ็อกเทฟยังทำการ เสริมการมอบหมาย เช่น <code>x += 5</code>

=== ผ่อนคลาย-ปกป้อง ===
Octave รองรับรูปแบบ [[การจัดการสิ่งผิดปรกติ|การจัดการข้อยกเว้น]] ที่จำกัดซึ่งจำลองตาม [http://www.lispworks.com/documentation/HyperSpec/Body/s_unwind.htm <code>unwind_protect</code>] ของ [[ภาษาลิสป์|Lisp]] รูปแบบทั่วไปของบล็อก unwind_protect มีลักษณะดังนี้:<syntaxhighlight lang="octave">
unwind_protect
body
unwind_protect_cleanup
cleanup
end_unwind_protect
</syntaxhighlight>ตามกฎทั่วไป GNU Octave รับรู้ว่าเป็นการยกเลิก <code>''block''</code> ที่กำหนด ไม่ว่าจะเป็นการ <code>end</code> คำหลัก (ซึ่งเข้ากันได้กับภาษา MATLAB) หรือ <code>end ''block''</code> คำหลักที่เฉพาะเจาะจงมากขึ้น หรือในบางกรณี <code>end_ ''block''</code> ด้วยเหตุนี้ บล็อก <code>unwind_protect</code> จึงสามารถยุติได้ด้วยคีย์เวิร์ด <code>end_unwind_protect</code> ดังตัวอย่าง หรือใช้คีย์เวิร์ดแบบพกพามากกว่า <code>end</code>

ส่วน ''การล้างข้อมูล'' ของบล็อกจะถูกดำเนินการเสมอ ในกรณีที่ส่วน ''ของร่างกาย'' เกิดข้อยกเว้น ''การล้างข้อมูล'' จะดำเนินการทันทีก่อนที่จะเผยแพร่ข้อยกเว้นไปนอกบล็อก <code>unwind_protect</code>

GNU Octave ยังรองรับการจัดการข้อยกเว้นรูปแบบอื่น (เข้ากันได้กับภาษา MATLAB):<syntaxhighlight lang="matlab">
try
body
catch
exception_handling
end
</syntaxhighlight>รูปแบบหลังนี้แตกต่างจากบล็อก <code>unwind_protect</code> ในสองวิธี ขั้นแรก ''Exception_handling'' จะดำเนินการเฉพาะเมื่อมีการยกข้อยกเว้นโดย ''body'' เท่านั้น ประการที่สอง หลังจากการดำเนินการของ ''Exception_handling'' ข้อยกเว้นจะไม่แพร่กระจายออกไปนอกบล็อก (เว้นแต่จะมีการแทรกคำสั่ง <code>rethrow( lasterror )</code> ไว้อย่างชัดเจนภายในโค้ด ''Exception_handling'' )

=== รายการอาร์กิวเมนต์ที่มีความยาวผันแปรได้ ===
อ็อกเทฟมีกลไกในการจัดการฟังก์ชันที่รับอาร์กิวเมนต์ที่ไม่ระบุจำนวนโดยไม่มีขีดจำกัดบนที่ชัดเจน หากต้องการระบุรายการอาร์กิวเมนต์ตั้งแต่ศูนย์ขึ้นไป ให้ใช้อาร์กิวเมนต์พิเศษ <code>varargin</code> เป็นอาร์กิวเมนต์สุดท้าย (หรือเท่านั้น) ในรายการ <code>varargin</code> เป็นอาร์เรย์เซลล์ที่มีอาร์กิวเมนต์อินพุตทั้งหมด<syntaxhighlight lang="octave">
function s = plus (varargin)
if (nargin==0)
s = 0;
else
s = varargin{1} + plus (varargin{2:nargin});
end
end
</syntaxhighlight>

=== รายการส่งคืนที่มีความยาวผันแปรได้ ===
สามารถตั้งค่าฟังก์ชันให้ส่งคืนค่าจำนวนเท่าใดก็ได้โดยใช้ค่าส่งคืนพิเศษ <code>varargout</code> ตัวอย่างเช่น:<syntaxhighlight lang="octave">
function varargout = multiassign (data)
for k=1:nargout
varargout{k} = data(:,k);
end
end
</syntaxhighlight>

=== บูรณาการ C++ ===
นอกจากนี้ยังสามารถรันโค้ด Octave ได้โดยตรงในโปรแกรม C++ ตัวอย่างเช่น นี่คือข้อมูลโค้ดสำหรับการเรียก <code>rand([10,1])</code> :<syntaxhighlight lang="cpp">
#include <octave/oct.h>
...
ColumnVector NumRands(2);
NumRands(0) = 10;
NumRands(1) = 1;
octave_value_list f_arg, f_ret;
f_arg(0) = octave_value(NumRands);
f_ret = feval("rand", f_arg, 1);
Matrix unis(f_ret(0).matrix_value());
</syntaxhighlight>รหัส C และ C++ สามารถรวมเข้ากับ GNU Octave ได้โดยการสร้างไฟล์ oct หรือใช้ ไฟล์ MEX ที่เข้ากันได้กับ MATLAB

== ความเข้ากันได้ของ MATLAB ==
Octave ได้รับการสร้างขึ้นโดยคำนึงถึงความเข้ากันได้ของ MATLAB และแบ่งปันคุณสมบัติมากมายกับ MATLAB:

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

อ็อกเทฟถือว่าความไม่เข้ากันกับ MATLAB ว่าเป็น [[บั๊กซอฟต์แวร์|ข้อบกพร่อง]] ดังนั้นจึงถือได้ว่าเป็น [[โคลนซอฟต์แวร์|ซอฟต์แวร์โคลน]] ซึ่งไม่ [[ลิขสิทธิ์ซอฟต์แวร์|ละเมิดลิขสิทธิ์ซอฟต์แวร์]] ตามคดีของศาล ''[[โลตัส กับ บอร์แลนด์|Lotus v. Borland]]''

โดยหลักการแล้วสคริปต์ MATLAB จากที่เก็บ FileExchange ของ [[แมทเวิร์คส์|MathWorks]] นั้นเข้ากันได้กับ Octave อย่างไรก็ตาม แม้ว่าผู้ใช้มักจะจัดเตรียมและอัปโหลดภายใต้ [[ใบอนุญาตบีเอสดี|ใบอนุญาต BSD แบบ]] [[สัญญาอนุญาตโอเพนซอร์ซ|โอเพ่นซอร์ส]] [[ความเข้ากันได้ของใบอนุญาต|ที่เข้ากันได้กับ]] Octave และเหมาะสม แต่ [[EULA|ข้อกำหนดการใช้งาน]] FileExchange ห้ามการใช้งานใดๆ นอกเหนือจาก MATLAB [[ซอฟต์แวร์จำกัดสิทธิ์|ที่เป็นกรรมสิทธิ์]] ของ MathWorks <ref>{{Cite web|title=FAQ - Octave|url=https://wiki.octave.org/FAQ|access-date=2022-12-05|website=wiki.octave.org}}</ref> <ref>{{Cite web|title=MATLAB Central Terms of Use|url=https://www.mathworks.com/matlabcentral/content/terms-of-use.html|access-date=2022-12-05|website=www.mathworks.com|language=en}}</ref> <ref>{{Cite web|title=File Exchange Licensing FAQ|url=https://www.mathworks.com/matlabcentral/content/fx/fx-transition-faq.html|access-date=2022-12-05|website=www.mathworks.com|language=en}}</ref>

=== ความเข้ากันได้ของไวยากรณ์ ===
มี [http://octave.org/wiki/index.php?title=FAQ#Porting_programs_from_Matlab_to_Octave การเพิ่มไวยากรณ์] ที่มีจุดประสงค์เล็กน้อยแม้ว่าจะเล็กน้อยก็ตาม:

# บรรทัด ความคิดเห็น สามารถขึ้นต้นด้วยอักขระ # และ % อักขระ;
# รองรับตัวดำเนินการ [[ภาษาซี|ที่ใช้ C]] ต่างๆ ++, --, +=, *=, /=;
# องค์ประกอบสามารถอ้างอิงได้โดยไม่ต้องสร้างตัวแปรใหม่โดยการจัดทำดัชนีแบบเรียงซ้อน เช่น [1:10](3);
# [[สายอักขระ|สตริง]] สามารถกำหนดได้ด้วยอักขระ double-quote " เช่นเดียวกับอักขระ single-quote ';
# เมื่อประเภทตัวแปรเป็นแบบ เดี่ยว (ตัวเลขทศนิยมที่มีความแม่นยำเดียว) อ็อกเทฟจะคำนวณ " [[มัชฌิม|ค่าเฉลี่ย]] " ในโดเมนเดียว (MATLAB ใน โดเมนคู่ ) ซึ่งจะเร็วกว่าแต่ให้ผลลัพธ์ที่แม่นยำน้อยกว่า
# การบล็อกยังสามารถยุติได้ด้วยคีย์เวิร์ด โครงสร้างการควบคุม ที่เฉพาะเจาะจงมากขึ้น เช่น endif, endfor, end While เป็นต้น;
# ฟังก์ชั่นสามารถกำหนดได้ภายในสคริปต์และที่พรอมต์อ็อกเทฟ
# การมีอยู่ของลูป do-until (คล้ายกับ do- while ในภาษา C)

=== ความเข้ากันได้ของฟังก์ชัน ===
ฟังก์ชันต่างๆ ของ MATLAB จำนวนมาก แต่ไม่ใช่ทั้งหมดมีอยู่ใน GNU Octave และบางฟังก์ชันสามารถเข้าถึงได้ผ่านแพ็คเกจใน [https://octave.sourceforge.io Octave Forge] ฟังก์ชันที่มีให้ใช้งานโดยเป็นส่วนหนึ่งของแพ็คเกจ Octave หลักหรือแพ็คเกจ Forge นั้นแสดงอยู่ [https://octave.sourceforge.io/list_functions.php?q=&sort=alphabetic ในระบบออนไลน์]

รายการฟังก์ชันที่ไม่พร้อมใช้งานจะรวมอยู่ในฟังก์ชันอ็อกเทฟ [http://hg.savannah.gnu.org/hgweb/octave/file/tip/scripts/help/__unimplemented__.m <code>__unimplemented.m__</code>] ฟังก์ชันที่ยังไม่ได้ดำเนินการยังแสดงอยู่ในแพ็คเกจ Octave Forge จำนวนมากใน [https://wiki.octave.org/Category:Octave_Forge Octave Wiki]

เมื่อเรียกใช้ฟังก์ชันที่ยังไม่ได้ใช้งาน ข้อความแสดงข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น:<syntaxhighlight lang="octave">
octave:1> guide
warning: the 'guide' function is not yet implemented in Octave

Please read <http://www.octave.org/missing.html> to learn how you can contribute missing functionality.
error: 'guide' undefined near line 1 column 1
</syntaxhighlight>

== ส่วนติดต่อผู้ใช้ ==
อ็อกเทฟมาพร้อมกับ [[ส่วนต่อประสานกราฟิกกับผู้ใช้]] (GUI) อย่างเป็นทางการและ [[สิ่งแวดล้อมสำหรับการพัฒนาแบบเบ็ดเสร็จ|สภาพแวดล้อมการพัฒนาแบบรวม]] (IDE) ที่ใช้ [[คิวต์|Qt]] มีให้บริการตั้งแต่ Octave 3.8, <ref name="auto1">{{Cite web|title=GNU Octave Version 3.8|url=https://www.gnu.org/software/octave/NEWS-3.8.html|website=www.gnu.org}}<cite class="citation web cs1" data-ve-ignore="true">[https://www.gnu.org/software/octave/NEWS-3.8.html "GNU Octave Version 3.8"]. </cite></ref> และกลายเป็นอินเทอร์เฟซเริ่มต้น (ผ่าน อินเทอร์เฟซบรรทัดคำสั่ง ) ด้วยการเปิดตัว Octave 4.0 <ref name="auto">{{Cite web|title=GNU Octave Version 4.0|url=https://www.gnu.org/software/octave/NEWS-4.0.html|website=www.gnu.org}}<cite class="citation web cs1" data-ve-ignore="true">[https://www.gnu.org/software/octave/NEWS-4.0.html "GNU Octave Version 4.0"]. </cite></ref> ได้รับการตอบรับอย่างดีจากผู้สนับสนุน EDN ผู้เขียน "[Octave] ตอนนี้มี GUI ที่ใช้งานได้ดีมาก" ในการตรวจสอบ GUI รุ่นใหม่ในปี <ref>{{Cite web|last=Hageman|first=Steve|date=7 February 2014|title=GNU Octave hits a high note|url=http://www.edn.com/electronics-blogs/the-practicing-instrumentation-engineer/4428091/GNU-Octave-hits-a-high-note|website=[[EDN (magazine)|EDN]]}}</ref>

ส่วนหน้าแบบกราฟิกของบุคคลที่สามจำนวนมากได้รับการพัฒนา เช่น ToolboX สำหรับการศึกษาการเขียนโค้ด

== แอปพลิเคชัน GUI ==
ด้วยรหัส Octave ผู้ใช้สามารถสร้างแอปพลิเคชัน GUI ได้ ดู [https://octave.org/doc/v7.1.0/GUI-Development.html การพัฒนา GUI (GNU Octave (เวอร์ชัน 7.1.0))] ด้านล่างนี้เป็นตัวอย่างบางส่วน:

ปุ่ม, การควบคุมการแก้ไข, ช่องทำเครื่องหมาย<syntaxhighlight lang="octave">
# create figure and panel on it
f = figure;
# create a button (default style)
b1 = uicontrol (f, "string", "A Button", "position",[10 10 150 40]);
# create an edit control
e1 = uicontrol (f, "style", "edit", "string", "editable text", "position",[10 60 300 40]);
# create a checkbox
c1 = uicontrol (f, "style", "checkbox", "string", "a checkbox", "position",[10 120 150 40]);
</syntaxhighlight>กล่องข้อความ<syntaxhighlight lang="octave">
prompt = {"Width", "Height", "Depth"};
defaults = {"1.10", "2.20", "3.30"};
rowscols = [1,10; 2,20; 3,30];
dims = inputdlg (prompt, "Enter Box Dimensions", rowscols, defaults);
</syntaxhighlight><syntaxhighlight lang="octave">
prompt = {"Width", "Height", "Depth"};
defaults = {"1.10", "2.20", "3.30"};
rowscols = [1,10; 2,20; 3,30];
dims = inputdlg (prompt, "Enter Box Dimensions", rowscols, defaults);
</syntaxhighlight>กล่องรายการพร้อมกล่องข้อความ<syntaxhighlight lang="octave">
my_options = {"An item", "another", "yet another"};
[sel, ok] = listdlg ("ListString", my_options, "SelectionMode", "Multiple");
if (ok == 1)
msgbox ("You selected:");
for i = 1:numel (sel)
msgbox (sprintf ("\t%s", my_options{sel(i)}));
endfor
else
msgbox ("You cancelled.");
endif
</syntaxhighlight>ปุ่มเรดิโอ<syntaxhighlight lang="octave">
# create figure and panel on it
f = figure;
# create a button group
gp = uibuttongroup (f, "Position", [ 0 0.5 1 1])
# create a buttons in the group
b1 = uicontrol (gp, "style", "radiobutton", "string", "Choice 1", "Position", [ 10 150 100 50 ]);
b2 = uicontrol (gp, "style", "radiobutton", "string", "Choice 2", "Position", [ 10 50 100 30 ]);
# create a button not in the group
b3 = uicontrol (f, "style", "radiobutton","string", "Not in the group","Position", [ 10 50 100 50 ]);
</syntaxhighlight>

== แพ็คเกจ ==
Octave ยังมีแพ็คเกจมากมายให้เลือก แพ็คเกจเหล่านั้นตั้งอยู่ที่ Octave-Forge [https://octave.sourceforge.io/packages.php Octave Forge - Package] หรือ [https://gnu-octave.github.io/packages/symbolic Github Octave Package] ใครๆ ก็สามารถสร้างและดูแลรักษาแพ็คเกจได้

== เปรียบเทียบกับซอฟต์แวร์อื่นที่คล้ายคลึงกัน ==
ทางเลือก [[ซอฟต์แวร์เสรี|ฟรี]] อื่น ๆ สำหรับ MATLAB ได้แก่ [[ซิแล็บ|Scilab]] และ [[ฟรีแมท|FreeMat]] <ref name="Trappenberg2010">{{Cite book|last=Trappenberg|first=Thomas|title=Fundamentals of Computational Neuroscience|publisher=Oxford University Press|year=2010|isbn=978-0-19-956841-3|page=361}}</ref> <ref name="MuhammadZalizniak2011">{{Cite book|last=Muhammad|first=A|url=https://archive.org/details/practicalscienti00muha|title=Practical Scientific Computing|last2=Zalizniak|first2=V|publisher=[[Woodhead Publishing]]|year=2011|isbn=978-0-85709-226-7|page=[https://archive.org/details/practicalscienti00muha/page/n11 3]|url-access=limited}}</ref> <ref name="MegreyMoksness2008">{{Cite book|last=Megrey|first=Bernard A.|url=https://archive.org/details/computersfisheri00megr|title=Computers in Fisheries Research|last2=Moksness|first2=Erlend|publisher=Springer Science & Business Media|year=2008|isbn=978-1-4020-8636-6|page=[https://archive.org/details/computersfisheri00megr/page/n351 345]|url-access=limited}}</ref> <ref name="Kapuno2008">{{Cite book|last=Kapuno|first=Raul Raymond|title=Programming for Chemical Engineers Using C, C++, and MATLAB|publisher=Jones & Bartlett Publishers|year=2008|isbn=978-1-934015-09-4|page=365}}</ref> Octave เข้ากันได้กับ MATLAB มากกว่า Scilab <ref name="Trappenberg2010" /> <ref name="Herman2013">{{Cite book|last=Herman|first=Russell L.|title=A Course in Mathematical Methods for Physicists|publisher=CRC Press|year=2013|isbn=978-1-4665-8467-9|page=42}}</ref> <ref name="WouwerSaucez2014">{{Cite book|last=Wouwer|first=Alain Vande|title=Simulation of ODE/PDE Models with MATLAB, Octave and Scilab: Scientific and Engineering Applications|last2=Saucez|first2=Philippe|last3=Vilas|first3=Carlos|publisher=Springer|year=2014|isbn=978-3-319-06790-2|pages=114–115}}</ref> และ FreeMat ยังไม่ได้รับการอัปเดตตั้งแต่เดือนมิถุนายน 2013 <ref>{{Cite web|title=FreeMat|url=http://freemat.sourceforge.net/|access-date=22 February 2020|website=freemat.sourceforge.net}}</ref>

== ดูสิ่งนี้ด้วย ==
{{สถานีย่อย|Mathematics|Computer programming|Free and open-source software
}}
}}
'''กนู อ็อกเตฟ''' ({{lang-en|GNU Octave}}) เป็น[[ซอฟต์แวร์]]สำหรับ[[ภาษาโปรแกรมระดับสูง]]โดยเน้น[[การวิเคราะห์เชิงตัวเลข]] ช่วยสำหรับแก้ปัญหาเชิงตัวเลขเชิงเส้นและไม่เป็นเชิงเส้น ภาษามีส่วนคล้ายกับ [[MATLAB]] นอกจากนี้ยังนำไปใช้[[การประมวลผลแบบกลุ่ม|ประมวลผลแบบกลุ่ม]]ได้ อ็อกเตฟเป็นส่วนหนึ่งของโครงการ[[กนู]]ในการพัฒนา[[ซอฟต์แวร์เสรี]]เพื่อการใช้งานภายใต้[[สัญญาอนุญาตสาธารณะทั่วไปของกนู]] อ็อกเตฟมักถูกมองว่าเป็นทางเลือกหนึ่งที่ฟรีของ MATLAB อันเป็นซอฟต์แวร์ที่มีราคาแพง<ref name="WouwerSaucez2014">{{cite book|last1=Wouwer|first1=Alain Vande|last2=Saucez|first2=Philippe|last3=Vilas|first3=Carlos|title=Simulation of ODE/PDE Models with MATLAB, Octave and Scilab: Scientific and Engineering Applications|year=2014|publisher=Springer|isbn=978-3-319-06790-2|pages=114–115}}</ref>


* รายการซอฟต์แวร์วิเคราะห์เชิงตัวเลข
== ดูเพิ่ม ==
* การเปรียบเทียบซอฟต์แวร์วิเคราะห์เชิงตัวเลข
* รายการแพ็คเกจทางสถิติ
* รายชื่อไลบรารีตัวเลข
* [[แมตแล็บ|แมทแล็บ]]


== หมายเหตุ ==
* [[การเรียนรู้ของเครื่อง]]
{{รายการหมายเหตุ}}
* [[การเรียนรู้เชิงลึก]]
* [[ปัญญาประดิษฐ์]]


== อ้างอิง ==
== อ้างอิง ==
{{รายการอ้างอิง|30em}}
[[หมวดหมู่:ซอฟต์แวร์]]

<references />
== อ่านเพิ่มเติม ==
[[หมวดหมู่:การเรียนรู้ของเครื่อง]]

* {{Citation|last=Hansen|first=Jesper Schmidt|title=GNU Octave. Beginner's Guide|date=June 2011|url=http://www.packtpub.com/gnu-octave-beginners-guide/book|publisher=[[Packt Publishing]]|isbn=978-1-849-51332-6}}

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

* {{เว็บไซต์ทางการ}}
{{GNU}}{{Numerical analysis software}}{{Statistical software}}{{Image processing software}}{{FOSS}}{{Authority control}}
[[หมวดหมู่:ซอฟต์แวร์เสรีข้ามแพลตฟอร์ม]]
[[หมวดหมู่:หน้าที่มีการแปลที่ยังไม่ได้ตรวจทาน]]

รุ่นแก้ไขเมื่อ 10:25, 14 มีนาคม 2567

GNU Octave เป็น ภาษาการเขียนโปรแกรมทางวิทยาศาสตร์ สำหรับ การคำนวณทางวิทยาศาสตร์ และ การคำนวณเชิงตัวเลข อ็อกเทฟช่วยในการแก้ปัญหาเชิงเส้นและไม่เชิงเส้นในเชิงตัวเลข และสำหรับดำเนินการทดลองเชิงตัวเลขอื่นๆ โดยใช้ภาษาที่ส่วนใหญ่เข้ากันได้กับ MATLAB นอกจากนี้ยังอาจใช้เป็นภาษา ที่เน้นแบบแบตช์ ด้วย ในฐานะที่เป็นส่วนหนึ่งของ โครงการ GNU ซอฟต์แวร์นี้เป็น ซอฟต์แวร์เสรี ภายใต้เงื่อนไขของ GNU General Public License

ประวัติ

โครงการนี้เกิดขึ้นประมาณปี พ.ศ. 2531 [1] ในตอนแรกตั้งใจที่จะใช้ร่วมกับหลักสูตรการออกแบบเครื่องปฏิกรณ์เคมี การพัฒนาเต็มรูปแบบเริ่มต้นโดย John W. Eaton ในปี 1992 อัลฟ่ารุ่นแรกเริ่มตั้งแต่วันที่ 4 มกราคม พ.ศ. 2536 และในวันที่ 17 กุมภาพันธ์ พ.ศ. 2537 เวอร์ชัน 1.0 ได้รับการเผยแพร่ เวอร์ชัน 8.4.0 เปิดตัวเมื่อวันที่ 5 พฤศจิกายน 2023 [2]

โปรแกรมนี้ตั้งชื่อตาม Octave Levenspiel อดีตศาสตราจารย์ของผู้เขียนหลัก Levenspiel เป็นที่รู้จักจากความสามารถของเขาในการ คำนวณแบบ back-of-envelope อย่างรวดเร็ว [3]

ประวัติการพัฒนา

Time Action
1988/1989 1st discussions (Book and Software)
February 1992 Start of Development
January 1993 News in Web (Version 0.60)
February 1994 1st Publication (Version 1.0.0 to 1.1.1)[4]
December 1996 2nd Publication (Version 2.0.x) with Windows Port (Cygwin)[5]
March 1998 Version 2.1
November 2004 Version 2.9 (DEV Version of 3.0)[6]
December 2007 Publication of Version 3.0 (Milestone)[7]
June 2009 Publication of Version 3.2 (Milestone)[8]
8 February 2011 Version 3.4.0 (Milestone)[9]
22 February 2012 Publication of Octave 3.6.1 (Milestone)[10][11]
31 December 2013 Publication of Octave 3.8.0 (experimental GUI)[12][13][14]
29 May 2015 Version 4.0.0 (stable GUI and new Syntax for OOP)[15][16][17][18]
14 November 2016 Version 4.2.0 (gnuplot 4.4+)[19][20][21][22]
30 April 2018 Version 4.4.0 (new Goal for GUI QT Toolkit, the FLTK toolkit is not deprecated and there is no schedule for its removal - while no longer prioritized)[23][24][25]
1 March 2019 Publication of Octave 5.1.0 (QT5 preferred, Qt 4.8 minimum), hiDpi support[26]
31 January 2020 Publication of Octave 5.2.0 (QT5 preferred)[27]
26 November 2020 Publication of Octave 6.1.0 (QT5 preferred, Qt 4.x deprecated for remove in 7)[28]
20 February 2021 Publication of Octave 6.2.0 (QT5 preferred), Bugfix, improved matlab syntax support[29]
6 April 2022 Publication of Octave 7.1.0 (QT5 preferred), improved graphics backend and matlab compatibility[30]
28 July 2022 Publication of Octave 7.2.0 (QT5 preferred), bug fixing release[31]
2 Nov 2022 Publication of Octave 7.3.0 (QT5 preferred), bug fixing release[32]
7 March 2023 Publication of Octave 8.1.0, improved graphics backend and matlab compatibility[33]
13 April 2023 Publication of Octave 8.2.0, bug fixing release[34]
8 August 2023 Publication of Octave 8.3.0, bug fixing release[35]
5 November 2023 Publication of Octave 8.4.0, bug fixing release[2]

การพัฒนา

นอกเหนือจากการใช้บนเดสก์ท็อปสำหรับการคำนวณทางวิทยาศาสตร์ส่วนบุคคลแล้ว Octave ยังใช้ในด้านวิชาการและอุตสาหกรรมอีกด้วย ตัวอย่างเช่น Octave ถูกใช้บนคอมพิวเตอร์คู่ขนาน ขนาดใหญ่ที่ Pittsburgh Supercomputing Center เพื่อค้นหาช่องโหว่ที่เกี่ยวข้องกับการเดาหมายเลขประกันสังคม [36]

การเร่งความเร็วด้วย OpenCL หรือ CUDA ก็สามารถทำได้ด้วยการใช้ GPU [37]

รายละเอียดทางเทคนิค

  • อ็อกเทฟเขียนด้วย ภาษา C++ โดยใช้ ไลบรารี่มาตรฐาน C++
  • อ็อกเทฟใช้ ล่าม เพื่อรันภาษาสคริปต์อ็อกเทฟ
  • อ็อกเทฟสามารถขยายได้โดยใช้โมดูลที่สามารถโหลดได้แบบไดนามิก
  • ตัวแปลระดับแปดเสียงมีกลไกกราฟิกที่ใช้ OpenGL เพื่อสร้างแปลง กราฟ และแผนภูมิ และบันทึกหรือพิมพ์ หรืออีกทางหนึ่ง gnuplot สามารถใช้เพื่อจุดประสงค์เดียวกันได้
  • อ็อกเทฟมี ส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI) นอกเหนือจาก ส่วนต่อประสานบรรทัดคำสั่ง (CLI) แบบดั้งเดิม ดู #อินเทอร์เฟซผู้ใช้ สำหรับรายละเอียด

ภาษาอ็อกเทฟ

ภาษาอ็อกเทฟเป็นภาษาการเขียนโปรแกรมแบบตีความ มันเป็นภาษาโปรแกรมที่มีโครงสร้าง (คล้ายกับ C ) และสนับสนุนฟังก์ชันคลังมาตรฐาน C ทั่วไปจำนวนมาก และการเรียกและฟังก์ชันของระบบ UNIX บางอย่าง [38] อย่างไรก็ตาม มันไม่สนับสนุนการส่งผ่านอาร์กิวเมนต์โดยการอ้างอิง [39] แม้ว่าอาร์กิวเมนต์ของฟังก์ชันเป็น แบบคัดลอกเมื่อเขียน เพื่อหลีกเลี่ยงการทำซ้ำที่ไม่จำเป็น

โปรแกรมอ็อกเทฟประกอบด้วยรายการการเรียกใช้ฟังก์ชันหรือ สคริปต์ ไวยากรณ์เป็นแบบ เมทริกซ์ และมีฟังก์ชันต่างๆ สำหรับการดำเนินการเมทริกซ์ รองรับ โครงสร้างข้อมูล ที่หลากหลายและอนุญาต การเขียนโปรแกรมเชิงวัตถุ [40]

ไวยากรณ์ของมันคล้ายกับ MATLAB มากและการเขียนโปรแกรมอย่างระมัดระวังของสคริปต์จะช่วยให้สามารถทำงานได้ทั้งบน Octave และ MATLAB [41]

เนื่องจากอ็อกเทฟมีให้บริการภายใต้ สัญญาอนุญาตสาธารณะทั่วไปของ GNU จึงอาจมีการเปลี่ยนแปลง คัดลอก และใช้งานได้อย่างอิสระ [3] โปรแกรมนี้ทำงานบน Microsoft Windows และ ระบบปฏิบัติการ ที่คล้าย Unix และ Unix ส่วนใหญ่ รวมถึง Linux, Android และ macOS [42] [43] [44]

คุณสมบัติเด่น

การกรอกคำสั่งและชื่อตัวแปร

การพิมพ์อักขระ TAB บนบรรทัดคำสั่งทำให้ Octave พยายามกรอกตัวแปร ฟังก์ชัน และชื่อไฟล์ให้สมบูรณ์ (คล้ายกับ การเสร็จสิ้นแท็บ ของ Bash ) อ็อกเทฟใช้ข้อความหน้าเคอร์เซอร์เป็นส่วนเริ่มต้นของชื่อเพื่อเติมให้สมบูรณ์ [45]

ประวัติคำสั่ง

เมื่อทำงานแบบโต้ตอบ Octave จะบันทึกคำสั่งที่พิมพ์ในบัฟเฟอร์ภายในเพื่อให้สามารถเรียกคืนและแก้ไขได้

โครงสร้างข้อมูล

อ็อกเทฟมีการรองรับจำนวนจำกัดสำหรับการจัดระเบียบข้อมูลในโครงสร้าง ในตัวอย่างนี้ เราเห็นโครงสร้างx มีองค์ประกอบabc, (จำนวนเต็ม อาร์เรย์ และสตริง ตามลำดับ):

octave:1> x.a = 1; x.b = [1, 2; 3, 4]; x.c = "string";
octave:2> x.a
ans =  1
octave:3> x.b
ans =

   1   2
   3   4

octave:4> x.c
ans = string
octave:5> x
x =

  scalar structure containing the fields:

    a = 1
    b =

       1   2
       3   4

    c = string

ตัวดำเนินการบูลีนลัดวงจร

อ็อกเทฟ && และ || ตัวดำเนินการ เชิงตรรกะได้รับการประเมินในลักษณะ ลัดวงจร (เช่น ตัวดำเนินการที่สอดคล้องกันในภาษา C ) ตรงกันข้ามกับตัวดำเนินการแบบองค์ประกอบต่อองค์ประกอบ & และ | .

ตัวดำเนินการเพิ่มและลด

อ็อกเทฟประกอบด้วย ตัวดำเนินการการเพิ่มและลดค่า แบบ C ++ และ -- ทั้งในแบบฟอร์มคำนำหน้าและคำต่อท้าย อ็อกเทฟยังทำการ เสริมการมอบหมาย เช่น x += 5

ผ่อนคลาย-ปกป้อง

Octave รองรับรูปแบบ การจัดการข้อยกเว้น ที่จำกัดซึ่งจำลองตาม unwind_protect ของ Lisp รูปแบบทั่วไปของบล็อก unwind_protect มีลักษณะดังนี้:

unwind_protect
  body
unwind_protect_cleanup
  cleanup
end_unwind_protect

ตามกฎทั่วไป GNU Octave รับรู้ว่าเป็นการยกเลิก block ที่กำหนด ไม่ว่าจะเป็นการ end คำหลัก (ซึ่งเข้ากันได้กับภาษา MATLAB) หรือ end block คำหลักที่เฉพาะเจาะจงมากขึ้น หรือในบางกรณี end_ block ด้วยเหตุนี้ บล็อก unwind_protect จึงสามารถยุติได้ด้วยคีย์เวิร์ด end_unwind_protect ดังตัวอย่าง หรือใช้คีย์เวิร์ดแบบพกพามากกว่า end

ส่วน การล้างข้อมูล ของบล็อกจะถูกดำเนินการเสมอ ในกรณีที่ส่วน ของร่างกาย เกิดข้อยกเว้น การล้างข้อมูล จะดำเนินการทันทีก่อนที่จะเผยแพร่ข้อยกเว้นไปนอกบล็อก unwind_protect

GNU Octave ยังรองรับการจัดการข้อยกเว้นรูปแบบอื่น (เข้ากันได้กับภาษา MATLAB):

try
   body
catch
   exception_handling
end

รูปแบบหลังนี้แตกต่างจากบล็อก unwind_protect ในสองวิธี ขั้นแรก Exception_handling จะดำเนินการเฉพาะเมื่อมีการยกข้อยกเว้นโดย body เท่านั้น ประการที่สอง หลังจากการดำเนินการของ Exception_handling ข้อยกเว้นจะไม่แพร่กระจายออกไปนอกบล็อก (เว้นแต่จะมีการแทรกคำสั่ง rethrow( lasterror ) ไว้อย่างชัดเจนภายในโค้ด Exception_handling )

รายการอาร์กิวเมนต์ที่มีความยาวผันแปรได้

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

function s = plus (varargin)
   if (nargin==0)
      s = 0;
   else
      s = varargin{1} + plus (varargin{2:nargin});
   end
end

รายการส่งคืนที่มีความยาวผันแปรได้

สามารถตั้งค่าฟังก์ชันให้ส่งคืนค่าจำนวนเท่าใดก็ได้โดยใช้ค่าส่งคืนพิเศษ varargout ตัวอย่างเช่น:

function varargout = multiassign (data)
   for k=1:nargout
      varargout{k} = data(:,k);
   end
end

บูรณาการ C++

นอกจากนี้ยังสามารถรันโค้ด Octave ได้โดยตรงในโปรแกรม C++ ตัวอย่างเช่น นี่คือข้อมูลโค้ดสำหรับการเรียก rand([10,1]) :

#include <octave/oct.h>
...
ColumnVector NumRands(2);
NumRands(0) = 10;
NumRands(1) = 1;
octave_value_list f_arg, f_ret;
f_arg(0) = octave_value(NumRands);
f_ret = feval("rand", f_arg, 1);
Matrix unis(f_ret(0).matrix_value());

รหัส C และ C++ สามารถรวมเข้ากับ GNU Octave ได้โดยการสร้างไฟล์ oct หรือใช้ ไฟล์ MEX ที่เข้ากันได้กับ MATLAB

ความเข้ากันได้ของ MATLAB

Octave ได้รับการสร้างขึ้นโดยคำนึงถึงความเข้ากันได้ของ MATLAB และแบ่งปันคุณสมบัติมากมายกับ MATLAB:

  1. เมทริกซ์เป็นชนิดข้อมูลพื้นฐาน
  2. รองรับจำนวนเชิงซ้อนในตัว
  3. ฟังก์ชันทางคณิตศาสตร์ในตัวอันทรงพลังและไลบรารีฟังก์ชันที่กว้างขวาง
  4. ความสามารถในการขยายในรูปแบบของฟังก์ชันที่ผู้ใช้กำหนด

อ็อกเทฟถือว่าความไม่เข้ากันกับ MATLAB ว่าเป็น ข้อบกพร่อง ดังนั้นจึงถือได้ว่าเป็น ซอฟต์แวร์โคลน ซึ่งไม่ ละเมิดลิขสิทธิ์ซอฟต์แวร์ ตามคดีของศาล Lotus v. Borland

โดยหลักการแล้วสคริปต์ MATLAB จากที่เก็บ FileExchange ของ MathWorks นั้นเข้ากันได้กับ Octave อย่างไรก็ตาม แม้ว่าผู้ใช้มักจะจัดเตรียมและอัปโหลดภายใต้ ใบอนุญาต BSD แบบ โอเพ่นซอร์ส ที่เข้ากันได้กับ Octave และเหมาะสม แต่ ข้อกำหนดการใช้งาน FileExchange ห้ามการใช้งานใดๆ นอกเหนือจาก MATLAB ที่เป็นกรรมสิทธิ์ ของ MathWorks [46] [47] [48]

ความเข้ากันได้ของไวยากรณ์

มี การเพิ่มไวยากรณ์ ที่มีจุดประสงค์เล็กน้อยแม้ว่าจะเล็กน้อยก็ตาม:

  1. บรรทัด ความคิดเห็น สามารถขึ้นต้นด้วยอักขระ # และ % อักขระ;
  2. รองรับตัวดำเนินการ ที่ใช้ C ต่างๆ ++, --, +=, *=, /=;
  3. องค์ประกอบสามารถอ้างอิงได้โดยไม่ต้องสร้างตัวแปรใหม่โดยการจัดทำดัชนีแบบเรียงซ้อน เช่น [1:10](3);
  4. สตริง สามารถกำหนดได้ด้วยอักขระ double-quote " เช่นเดียวกับอักขระ single-quote ';
  5. เมื่อประเภทตัวแปรเป็นแบบ เดี่ยว (ตัวเลขทศนิยมที่มีความแม่นยำเดียว) อ็อกเทฟจะคำนวณ " ค่าเฉลี่ย " ในโดเมนเดียว (MATLAB ใน โดเมนคู่ ) ซึ่งจะเร็วกว่าแต่ให้ผลลัพธ์ที่แม่นยำน้อยกว่า
  6. การบล็อกยังสามารถยุติได้ด้วยคีย์เวิร์ด โครงสร้างการควบคุม ที่เฉพาะเจาะจงมากขึ้น เช่น endif, endfor, end While เป็นต้น;
  7. ฟังก์ชั่นสามารถกำหนดได้ภายในสคริปต์และที่พรอมต์อ็อกเทฟ
  8. การมีอยู่ของลูป do-until (คล้ายกับ do- while ในภาษา C)

ความเข้ากันได้ของฟังก์ชัน

ฟังก์ชันต่างๆ ของ MATLAB จำนวนมาก แต่ไม่ใช่ทั้งหมดมีอยู่ใน GNU Octave และบางฟังก์ชันสามารถเข้าถึงได้ผ่านแพ็คเกจใน Octave Forge ฟังก์ชันที่มีให้ใช้งานโดยเป็นส่วนหนึ่งของแพ็คเกจ Octave หลักหรือแพ็คเกจ Forge นั้นแสดงอยู่ ในระบบออนไลน์

รายการฟังก์ชันที่ไม่พร้อมใช้งานจะรวมอยู่ในฟังก์ชันอ็อกเทฟ __unimplemented.m__ ฟังก์ชันที่ยังไม่ได้ดำเนินการยังแสดงอยู่ในแพ็คเกจ Octave Forge จำนวนมากใน Octave Wiki

เมื่อเรียกใช้ฟังก์ชันที่ยังไม่ได้ใช้งาน ข้อความแสดงข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น:

  octave:1> guide
  warning: the 'guide' function is not yet implemented in Octave

  Please read <http://www.octave.org/missing.html> to learn how you can contribute missing functionality.
  error: 'guide' undefined near line 1 column 1

ส่วนติดต่อผู้ใช้

อ็อกเทฟมาพร้อมกับ ส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI) อย่างเป็นทางการและ สภาพแวดล้อมการพัฒนาแบบรวม (IDE) ที่ใช้ Qt มีให้บริการตั้งแต่ Octave 3.8, [12] และกลายเป็นอินเทอร์เฟซเริ่มต้น (ผ่าน อินเทอร์เฟซบรรทัดคำสั่ง ) ด้วยการเปิดตัว Octave 4.0 [15] ได้รับการตอบรับอย่างดีจากผู้สนับสนุน EDN ผู้เขียน "[Octave] ตอนนี้มี GUI ที่ใช้งานได้ดีมาก" ในการตรวจสอบ GUI รุ่นใหม่ในปี [49]

ส่วนหน้าแบบกราฟิกของบุคคลที่สามจำนวนมากได้รับการพัฒนา เช่น ToolboX สำหรับการศึกษาการเขียนโค้ด

แอปพลิเคชัน GUI

ด้วยรหัส Octave ผู้ใช้สามารถสร้างแอปพลิเคชัน GUI ได้ ดู การพัฒนา GUI (GNU Octave (เวอร์ชัน 7.1.0)) ด้านล่างนี้เป็นตัวอย่างบางส่วน:

ปุ่ม, การควบคุมการแก้ไข, ช่องทำเครื่องหมาย

# create figure and panel on it
f = figure;
# create a button (default style)
b1 = uicontrol (f, "string", "A Button", "position",[10 10 150 40]);
# create an edit control
e1 = uicontrol (f, "style", "edit", "string", "editable text", "position",[10 60 300 40]);
# create a checkbox
c1 = uicontrol (f, "style", "checkbox", "string", "a checkbox", "position",[10 120 150 40]);

กล่องข้อความ

prompt = {"Width", "Height", "Depth"};
defaults = {"1.10", "2.20", "3.30"};
rowscols = [1,10; 2,20; 3,30];
dims = inputdlg (prompt, "Enter Box Dimensions", rowscols, defaults);
prompt = {"Width", "Height", "Depth"};
defaults = {"1.10", "2.20", "3.30"};
rowscols = [1,10; 2,20; 3,30];
dims = inputdlg (prompt, "Enter Box Dimensions", rowscols, defaults);

กล่องรายการพร้อมกล่องข้อความ

my_options = {"An item", "another", "yet another"};
[sel, ok] = listdlg ("ListString", my_options, "SelectionMode", "Multiple");
if (ok == 1)
  msgbox ("You selected:");
  for i = 1:numel (sel)
    msgbox (sprintf ("\t%s", my_options{sel(i)}));
  endfor
else
  msgbox ("You cancelled.");
endif

ปุ่มเรดิโอ

# create figure and panel on it
f = figure;
# create a button group
gp = uibuttongroup (f, "Position", [ 0 0.5 1 1])
# create a buttons in the group
b1 = uicontrol (gp, "style", "radiobutton", "string", "Choice 1", "Position", [ 10 150 100 50 ]);
b2 = uicontrol (gp, "style", "radiobutton", "string", "Choice 2", "Position", [ 10 50 100 30 ]);
# create a button not in the group
b3 = uicontrol (f, "style", "radiobutton","string", "Not in the group","Position", [ 10 50 100 50 ]);

แพ็คเกจ

Octave ยังมีแพ็คเกจมากมายให้เลือก แพ็คเกจเหล่านั้นตั้งอยู่ที่ Octave-Forge Octave Forge - Package หรือ Github Octave Package ใครๆ ก็สามารถสร้างและดูแลรักษาแพ็คเกจได้

เปรียบเทียบกับซอฟต์แวร์อื่นที่คล้ายคลึงกัน

ทางเลือก ฟรี อื่น ๆ สำหรับ MATLAB ได้แก่ Scilab และ FreeMat [50] [51] [52] [53] Octave เข้ากันได้กับ MATLAB มากกว่า Scilab [50] [54] [55] และ FreeMat ยังไม่ได้รับการอัปเดตตั้งแต่เดือนมิถุนายน 2013 [56]

ดูสิ่งนี้ด้วย

  • รายการซอฟต์แวร์วิเคราะห์เชิงตัวเลข
  • การเปรียบเทียบซอฟต์แวร์วิเคราะห์เชิงตัวเลข
  • รายการแพ็คเกจทางสถิติ
  • รายชื่อไลบรารีตัวเลข
  • แมทแล็บ

หมายเหตุ

อ้างอิง

  1. "About GNU Octave". www.gnu.org. GNU. สืบค้นเมื่อ 1 May 2018.
  2. 2.0 2.1 "GNU Octave 8.4.0 Released". octave.org (ภาษาอังกฤษ). 2023-11-05. สืบค้นเมื่อ 2023-11-20. อ้างอิงผิดพลาด: ป้ายระบุ <ref> ไม่สมเหตุสมผล มีนิยามชื่อ ":0" หลายครั้งด้วยเนื้อหาต่างกัน
  3. 3.0 3.1 Eaton, John W. "About Octave". สืบค้นเมื่อ 2009-06-28. อ้างอิงผิดพลาด: ป้ายระบุ <ref> ไม่สมเหตุสมผล มีนิยามชื่อ "about" หลายครั้งด้วยเนื้อหาต่างกัน
  4. "GNU Octave Version 1". www.gnu.org.
  5. "GNU Octave Version 2". www.gnu.org.
  6. "News Archive". www.gnu.org. 31 December 2012.
  7. "GNU Octave Version 3". www.gnu.org.
  8. "GNU Octave Version 3.2". www.gnu.org.
  9. "GNU Octave Version 3.4". www.gnu.org.
  10. "GNU Octave Version 3.6". www.gnu.org.
  11. "GNU Octave 3.6.4 Released". www.gnu.org. 21 February 2013.
  12. 12.0 12.1 "GNU Octave Version 3.8". www.gnu.org. อ้างอิงผิดพลาด: ป้ายระบุ <ref> ไม่สมเหตุสมผล มีนิยามชื่อ "auto1" หลายครั้งด้วยเนื้อหาต่างกัน
  13. "GNU Octave 3.8.0 Released". www.gnu.org. 31 December 2013.
  14. "GNU Octave 3.8.1 Released". www.gnu.org. 4 March 2014.
  15. 15.0 15.1 "GNU Octave Version 4.0". www.gnu.org. อ้างอิงผิดพลาด: ป้ายระบุ <ref> ไม่สมเหตุสมผล มีนิยามชื่อ "auto" หลายครั้งด้วยเนื้อหาต่างกัน
  16. "GNU Octave 4.0.0 Released". www.gnu.org. 29 May 2015.
  17. "GNU Octave 4.0.1 Released". www.gnu.org. 23 March 2016.
  18. "GNU Octave 4.0.3 Released". www.gnu.org. 2 July 2016.
  19. "GNU Octave 4.2.0 Released". Nov 14, 2016.
  20. "GNU Octave Version 4.2". www.gnu.org.
  21. "GNU Octave 4.2.1 Released". www.gnu.org. 24 February 2017.
  22. "GNU Octave 4.2.2 Released". www.gnu.org. 13 March 2018.
  23. "GNU Octave Version 4.4". www.gnu.org.
  24. "GNU Octave 4.4.0 Released". www.gnu.org. 30 April 2018.
  25. "GNU Octave 4.4.1 Released". www.gnu.org. 9 August 2018.
  26. "GNU Octave Version 5". www.gnu.org.
  27. "GNU Octave 5.2.0 Released". www.gnu.org. 31 January 2020.
  28. "GNU Octave 6.1.0 Released". www.gnu.org. 26 November 2020.
  29. "GNU Octave 6.2.0 Released". www.gnu.org. 20 February 2021.
  30. "GNU Octave 7.1.0 Released". www.gnu.org. 6 April 2022.
  31. "GNU Octave 7.2.0 Released". octave.org. 28 July 2022.
  32. "GNU Octave 7.3.0 Released". octave.org. 2 November 2022.
  33. "GNU Octave 8.1.0 Released". octave.org. 7 March 2023.
  34. "GNU Octave 8.2.0 Released". octave.org. 13 April 2023.
  35. "GNU Octave 8.3.0 Released". octave.org. 8 August 2023.
  36. "Social Security Number Vulnerability Findings Relied on Supercomputing". 8 July 2009. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 29 February 2012.
  37. "Drop-in Acceleration of GNU Octave". NVIDIA Developer Blog. June 5, 2014.
  38. "GNU Octave - Controlling subprocesses". 14 November 2008. คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 7 January 2009. สืบค้นเมื่อ 2009-01-28.
  39. "GNU Octave". สืบค้นเมื่อ 2009-01-28.
  40. "Summary of important user-visible changes for version 3.2". สืบค้นเมื่อ 2012-01-05.
  41. "FAQ: MATLAB compatibility". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2011-11-21. สืบค้นเมื่อ 2009-04-04.
  42. "FAQ: Getting Octave". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2011-11-21. สืบค้นเมื่อ 2009-04-04.
  43. "Top (GNU Octave (version 6.3.0))". octave.org.
  44. "Octave for Android - Octave". wiki.octave.org. สืบค้นเมื่อ 2021-08-23.
  45. Eaton, John W. "Letting Readline Type For You". GNU Octave Reference Manual.
  46. "FAQ - Octave". wiki.octave.org. สืบค้นเมื่อ 2022-12-05.
  47. "MATLAB Central Terms of Use". www.mathworks.com (ภาษาอังกฤษ). สืบค้นเมื่อ 2022-12-05.
  48. "File Exchange Licensing FAQ". www.mathworks.com (ภาษาอังกฤษ). สืบค้นเมื่อ 2022-12-05.
  49. Hageman, Steve (7 February 2014). "GNU Octave hits a high note". EDN.
  50. 50.0 50.1 Trappenberg, Thomas (2010). Fundamentals of Computational Neuroscience. Oxford University Press. p. 361. ISBN 978-0-19-956841-3.
  51. Muhammad, A; Zalizniak, V (2011). Practical Scientific Computing. Woodhead Publishing. p. 3. ISBN 978-0-85709-226-7.
  52. Megrey, Bernard A.; Moksness, Erlend (2008). Computers in Fisheries Research. Springer Science & Business Media. p. 345. ISBN 978-1-4020-8636-6.
  53. Kapuno, Raul Raymond (2008). Programming for Chemical Engineers Using C, C++, and MATLAB. Jones & Bartlett Publishers. p. 365. ISBN 978-1-934015-09-4.
  54. Herman, Russell L. (2013). A Course in Mathematical Methods for Physicists. CRC Press. p. 42. ISBN 978-1-4665-8467-9.
  55. Wouwer, Alain Vande; Saucez, Philippe; Vilas, Carlos (2014). Simulation of ODE/PDE Models with MATLAB, Octave and Scilab: Scientific and Engineering Applications. Springer. pp. 114–115. ISBN 978-3-319-06790-2.
  56. "FreeMat". freemat.sourceforge.net. สืบค้นเมื่อ 22 February 2020.

อ่านเพิ่มเติม

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

แม่แบบ:GNUแม่แบบ:Numerical analysis softwareแม่แบบ:Statistical softwareแม่แบบ:Image processing softwareแม่แบบ:FOSS