MATLAB - GNU Octave Tutorial

GNU Octave เป็นภาษาโปรแกรมระดับสูงเช่น MATLAB และส่วนใหญ่เข้ากันได้กับ MATLAB นอกจากนี้ยังใช้สำหรับการคำนวณเชิงตัวเลข

Octave มีคุณสมบัติทั่วไปดังต่อไปนี้กับ MATLAB -

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

GNU Octave ยังเป็นซอฟต์แวร์ที่แจกจ่ายต่อได้อย่างอิสระ คุณสามารถแจกจ่ายซ้ำและ / หรือแก้ไขได้ภายใต้เงื่อนไขของ GNU General Public License (GPL) ตามที่เผยแพร่โดย Free Software Foundation

MATLAB เทียบกับ Octave

โปรแกรม MATLAB ส่วนใหญ่ทำงานใน Octave แต่โปรแกรม Octave บางโปรแกรมอาจไม่ทำงานใน MATLAB เนื่องจาก Octave อนุญาตให้ใช้ไวยากรณ์บางอย่างที่ MATLAB ไม่มี

ตัวอย่างเช่น MATLAB รองรับอัญประกาศเดี่ยวเท่านั้น แต่ Octave รองรับทั้งอัญประกาศเดี่ยวและคู่สำหรับการกำหนดสตริง หากคุณกำลังมองหาบทช่วยสอนเกี่ยวกับ Octave โปรดอ่านบทช่วยสอนนี้ตั้งแต่เริ่มต้นซึ่งครอบคลุมทั้ง MATLAB และ Octave

ตัวอย่างที่เข้ากันได้

ตัวอย่างเกือบทั้งหมดที่กล่าวถึงในบทช่วยสอนนี้เข้ากันได้กับ MATLAB และ Octave ลองทำตามตัวอย่างใน MATLAB และ Octave ซึ่งให้ผลลัพธ์เดียวกันโดยไม่มีการเปลี่ยนแปลงทางไวยากรณ์ -

ตัวอย่างนี้จะสร้างแผนที่พื้นผิว 3 มิติสำหรับฟังก์ชัน g = XE - (x 2 + y ที่2 ) สร้างไฟล์สคริปต์และพิมพ์รหัสต่อไปนี้ -

[x,y] = meshgrid(-2:.2:2);
g = x .* exp(-x.^2 - y.^2);
surf(x, y, g)
print -deps graph.eps

เมื่อคุณเรียกใช้ไฟล์ MATLAB จะแสดงแผนที่ 3 มิติต่อไปนี้ -

ตัวอย่างที่เข้ากันไม่ได้

แม้ว่าฟังก์ชันหลักทั้งหมดของ MATLAB จะมีอยู่ใน Octave แต่ก็มีฟังก์ชันบางอย่างเช่น Differential & Integration Calculus ซึ่งไม่ตรงกันในทั้งสองภาษา บทช่วยสอนนี้ได้พยายามให้ตัวอย่างทั้งสองประเภทซึ่งแตกต่างกันในไวยากรณ์ของตน

พิจารณาตัวอย่างต่อไปนี้ที่ MATLAB และ Octave ใช้ประโยชน์จากฟังก์ชันต่าง ๆ เพื่อให้ได้พื้นที่ของเส้นโค้ง: f (x) = x 2 cos (x) สำหรับ −4 ≤ x ≤ 9 ต่อไปนี้เป็นเวอร์ชัน MATLAB ของโค้ด -

f = x^2*cos(x);
ezplot(f, [-4,9])
a = int(f, -4, 9)
disp('Area: '), disp(double(a));

เมื่อคุณเรียกใช้ไฟล์ MATLAB จะลงจุดกราฟ -

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้น

a =
8*cos(4) + 18*cos(9) + 14*sin(4) + 79*sin(9)
 
Area: 
   0.3326

แต่เพื่อให้ได้พื้นที่ของเส้นโค้งเดียวกันใน Octave คุณจะต้องใช้ประโยชน์จาก symbolic แพคเกจดังนี้ -

pkg load symbolic
symbols

x = sym("x");
f = inline("x^2*cos(x)");

ezplot(f, [-4,9])
print -deps graph.eps

[a, ierror, nfneval] = quad(f, -4, 9);
display('Area: '), disp(double(a));