MathLab 22/08/2012
ใน mathlab
มีตัวแปรอยู่ ทางตัวเลขอยู่ อย่างหนึ่ง คือ แบบ เมตริกซ์ ซึ่ง ถ้าเป็นเมตริกซ์แบบ
ตับเลขตัวเดียวแล้วเราจะเรียกว่า scalar ถ้าหากเมตริกซ์ที่เป็นแบบ
1 แถว หรือ ว่า 1 คอลัมน์
เราจะเรียกว่า เวกเตอร์ ลักษณะการกำหนด เมตริกซ์เริ่มต้นที่
การกำหนดตัวแปรขึ้นมาเพื่อทำการจัดเก็บค่า ยกตัวอย่างเช่น
a = [ 1, 2,
3; 2, 3,
4; 3, 4,
5]
ซึ่งการกำหนดทำได้โดย 1 แถวของเมตริกซ์จะคั่นด้วยเครื่องหมาย
semi colon ในตัวอย่างนี้จึงเป็นเมตริกซ์ 3 คูณ
3 ที่มี element
ทั้งหมด 9 ตัว
ใน mathlab ส่วนใหญ่จะมี
function พื้นฐานอยู่เป็นจำนวนมากพร้อมที่จะนำมาใช้งาน
ตัวอย่างเช่น function ทางคณิตศาสตร์ cos sine tan acos
asine atan เหล่านี้เป็นต้น นอกจากนี้ยัง มี built-in
functions อย่างเช่น rand(n) จะทำการสุ่มตัวเลขตั้งแต่
0-1 มาเท่ากับ n คูณ
n เมตริกซ์ function ในกลุ่มนี้ก็จะมี magic(n)
และ hilb(n) or Hilbert matrix เป็นต้น
ในการระบุสมาชิกของ matrix
แต่ละตัวนั้นสามารถทำได้โดยการ ใช้ a(2,1)
ก็คือ ต้องการที่จะระบุสมาชิกตัวที่อยู่ใน แถวที่ 2 หลัก
ที่ 1 ซึ่งก็คือ 2 นั่นเอง
ในการสร้าง element ของ matrix นั้น
mathlab ไม่ได้สนใจว่าเราจะสร้าง element
ขึ้นมาอย่างไร ยกตัวอย่างเช่น เวกเตอร์
b = [ -1.3 ,3^2, cos(30)]
สำหรับค่าที่เป็นข้อความสามารถ
กำหนดโดยการใช้ single quote ยกตัวอย่างเช่น t1
= ‘BCDE’ และ t2 = ‘A’ ดังนั้นถ้าหากเรานำข้อความทั้งสองมาต่อกัน
เราแค่ t3 = [t1, t2] ผลลัพธ์ที่ได้คือ t3 = ABCDE
บางครั้งเราต้องการ
ให้โปรแกรมทำซ้ำโดยการใช้ code ตัวเดิม
สัญลักษณืที่นำมาใช้บ่อยๆคือ colon
หรือ : ตัวอย่างเช่นเราสามารถพิมพ์
>> x = -1: 0.05 : 1 ;
>> for n=1 : 8
subplot(4,2,n), plot(x,sin(n*pi*x))
end
บรรทัดแรก หมายถึง กำหนดค่าให้ x
เริ่มตั้งแต่ -1 จนถึง 1 โดยการเพิ่มค่าทีละ
0.05
บรรทัดที่สอง เป็น for loop ที่กำหนดให้
n เริ่มต้นจาก 1 จนถึง
8
บรรทัดที่สาม กำหนดให้มีการ plot
ตัวกราฟ โดยฟังก์ชัน
subplot
นอกจากนี้ยังสามารที่จะใช้ คำสั่ง for
counter = [23 11 19 5.4 6] … end
เพิ่มเข้ามาโดยการนับเพิ่มจะสอดคล้อง
กับจำนวนที่อยู่ในวงเล็บ คือ ครั้งแรกจะนับ 23 ครั้งต่อไปจะนับ
11 …ตามลำดับ
การวน loop อีกแบบหนึ่งที่น่าสนใจ
คือ while loop โดยการที่เราสามารถกำหนดค่าเริ่มต้น
เป็นอันดับแรกและค่อยๆวนซ้ำกัน ดังตัวอย่าง
>> s = 1 ; n =1;
(กำหนดค่าเริ่มต้นให้กับตัวแปร
s และ n ซึ่งเท่ากับ 1)
>> while s+(n+1)^2 < 100 (กำหนดให้มีการวนซ้ำ
โดยการตรวจสอบเงื่อนไข ถ้าเป็นจริงก็ให้ทำซ้ำ)
>> n = n+1; s = s+ n^2;
end
>> [n,s]
ans =6 91 (ค่าที่ได้ควรจะมี
2 ค่า)
Programming in mathlab
M-files เราสามารถแบ่งออกได้เป็น
2 แบบ คือ script files และ
function files
สิ่งที่น่าสนใจอย่างหนึ่งใน mathlab
คือ การเขียน m-files function ขึ้นมาใช้
ซึ่งขั้นตอนหลักๆมีดังต่อไปนี้คือ
1.
กำหนดชื่อ
สำหรับฟังก์ชัน ซึ่งอยู่ในรูปแบบ file.m
2.
บรรทัดแรกของไฟล์จะต้องมี
รูปแบบดังต่อไปนี้
Function [list of outputs] = function name (list of
input)
ยกตัวอย่างเช่นเราจะกำหนดให้ function[A] = area(a,b,c)
3.
ส่วนหัวของบรรทัดเราสามารถ
ทำคำอธิบาย โดยใช้เครื่องหมาย เปอร์เซ็นต์ (%) เช่นเดียวกันกัในLatex
4.
ส่วนสุดท้ายน่าจะเป็นรายละเอียดของโปรแกรม
ตัวอย่างการเขียนโปรแกรมหาพื้นที่สามเหลี่ยม โดยมีความยาวด้านตามตัวแปร a, b และ
c
%%%%%%%%comment%%%%%%%%%
Function[A] = area(a,b,c)
S = (a+b+c)/2;
A = sqrt(s*(s-a)*(s-a)*(s-c));
%%%%%%%%EndOfArea%%%%%%%%
ตัวอย่างที่ 2 คือ
%trapaziod
rule for integral
h = input('mesh size h
=');
h = (0:h:1);
lenx =
length(x);
y = x.^2
int = (h/2)*(y(1)+2*sum(y(2:(lenx-1)))+y(lenx))
ซึ่งจะ save ชื่อ file เป็น trapint.m หากจะนำมาใช้ก็แค่พิมพ์เรียก ชื่อของ file trapint
บน command window
สิ่งหนึ่งที่เห็นจนชินตาใน
mathlab คือ การ plot surface ซึ่ง
function ที่ง่ายๆในการ plot คือ
z = f(x,y) ในการ plot function เราสามารถกำหนด ช่วงของตัวแปรของ x และ
y เช่นสมตติให้ 2 อยู่ในช่วง
2-4 และ y อยู่ในช่วง
1-3
โดยการกำหนดช่วงด้วยคำสั่ง
>> x = 2:0.5:4 ; y = 1: 0.5 :3 ;
ซึ่งยังต้องใช้ คำสั่ง meshgrid
>> [x,y] =
meshgrid(x,y) จากนั้นก็กำหนดฟังก์ชัน
ที่จะ plot เช่นเราต้องการ plot ฟังก์ชัน
>> z = (x-3).^2 – (Y-2).^2
>> mesh(x,y,z)
>> title (‘Saddle’) , xlabel(‘x’), ylabel(‘y’)
0 ความคิดเห็น:
แสดงความคิดเห็น