340 likes | 442 Vues
259201 Computer Programming for Engineer. การคำนวณเกี่ยวกับ Array and Matrix. ค่าเริ่มต้น : step : ค่าสุดท้าย. y = ( 0.2 , 0.4 , 0.6 , …, 2.0 ). การกำหนดค่าหลายๆ ค่าในตัวแปรเดียว (Vector Array). เช่นค่า u = ( 0.1 , 0.2 , 0.3 , …, 1.0 ). » u=[ 0.1 : .1 : 1.0 ];. » y = 2.0*u;.
E N D
259201Computer Programmingfor Engineer การคำนวณเกี่ยวกับ Array and Matrix
ค่าเริ่มต้น :step : ค่าสุดท้าย y = (0.2, 0.4, 0.6, …, 2.0) การกำหนดค่าหลายๆ ค่าในตัวแปรเดียว (Vector Array) เช่นค่า u = (0.1, 0.2, 0.3, …, 1.0) » u=[0.1:.1:1.0]; » y = 2.0*u;
อาเรย์ (Array) • คือกลุ่มของจำนวนที่ถูกเก็บอย่างมีโครงสร้าง เวกเตอร์แถว (Row Vector) เวกเตอร์คอลัมน์ (Column Vector) อาเรย์สองมิติ หรือ เมตริกซ์ (Matrix)
x=[0 1 2 3 4 5] x = 0 1 2 3 4 5 » y=1:5 y = 1 2 3 4 5 » z=1:2:10 z = 1 3 5 7 9 » z=10:-2:1 z = 10 8 6 4 2 การป้อนค่าให้กับอาเรย์
การป้อนค่าให้กับอาเรย์ด้วยฟังก์ชัน Linspace • เป็นการกำหนดให้ element ของอาเรย์มีค่าเริ่มตั้งแต่ first_value จนถึง last_value โดยให้มีจำนวนของข้อมูลทั้งหมด nelements และระยะห่างระหว่างข้อมูลแต่ละค่าจะมีขนาดเท่ากัน (Linear) linspace(first_value, last_value, n)
ตัวอย่าง » k=linspace(0,pi,11) k = Columns 1 through 7 0 0.3142 0.06283 0.9425 1.2566 1.5708 1.8850 Columns 8 through 11 2.1991 2.5133 2.8274 3.1416
การเรียกใช้ข้อมูลในแต่ละ element ของอาเรย์ • ต้องระบุตำแหน่งของ Element ที่ต้องการ โดยกำหนดไว้ด้านหลังของชื่อตัวแปร • เช่น ต้องการเรียกใช้ข้อมูลตำแหน่งที่สามของอาเรย์ z ใช้คำสั่ง » z=10:-2:1 z = 10 8 6 4 2 » z(3) ans = 6
การเรียกใช้ข้อมูลทีละหลาย elements ของอาเรย์ • ต้องระบุตำแหน่งของ elements ที่ต้องการ โดยใช้เครื่องหมาย , หรือช่องว่าง หรือเครื่องหมาย :เข้าช่วย » z([1 3 5]) ans = 10 6 2 » z([1,3,5]) ans = 10 6 2 » z(2:4) ans = 8 6 4
การสร้างอาเรย์ใหม่จากอาเรย์เดิมการสร้างอาเรย์ใหม่จากอาเรย์เดิม • ถ้าต้องการสร้างอาเรย์ใหม่ c ที่เกิดจากการนำเอาอาเรย์ x และ y มาต่อกัน » x=[0 1 2 3 4 5]; » y= 1:5; » c=[x y] c = 0 1 2 3 4 5 1 2 3 4 5
การคำนวณระหว่างอาเรย์กับสเกลาร์การคำนวณระหว่างอาเรย์กับสเกลาร์ • การคำนวณระหว่างอาเรย์และสเกลาร์ ทุกๆค่าของตัวแปรอาเรย์จะถูกกระทำด้วยจำนวนสเกลาร์เหมือนกันหมด เช่น » x=[0 1 2 3 4 5]; » z=10:-2:1; » x-3 ans = -3 -2 -1 0 1 2 » 2*z ans = 20 16 12 8 4
การคำนวณระหว่างอาเรย์กับอาเรย์การคำนวณระหว่างอาเรย์กับอาเรย์ • การคำนวณระหว่างอาเรย์กับอาเรย์ ไม่ว่าจะเป็นการบวก ลบ คูณหรือหาร • จำนวน Element ของอาเรย์จะต้องมีขนาดเท่ากัน • การคำนวณระหว่างอาเรย์จะกระทำระหว่าง Element ต่อ Element เช่น
ตัวอย่าง » x=1:9 x = 1 2 3 4 5 6 7 8 9 » y=2:10 y = 2 3 4 5 6 7 8 9 10 » x+y ans = 3 5 7 9 11 13 15 17 19 » x-y ans = -1 -1 -1 -1 -1 -1 -1 -1 -1
การคูณและการหารอาเรย์การคูณและการหารอาเรย์ • การคูณ การหาร การยกกำลัง แบบอาเรย์นั้นจะนำเอา Element ณ ตำแหน่งเดียวกันของสองอาเรย์มาทำการคูณ หาร หรือ ยกกำลังกัน • ต้องใช้ .* ./หรือ.\เพื่อให้ต่างไปจากการคูณหารแบบเมตริกซ์ » x=1:9; » y=2:10; » x.*y ans = 2 6 12 20 30 42 56 72 90
การหารอาเรย์ด้วย ./ และ .\ • สำหรับการหารจะใช้ . / หรือ .\ ก็ได้ แต่ตำแหน่งของตัวแปรจะวางสลับกัน » x.\y y ตั้งหารด้วย x » y./x y ตั้งหารด้วย x
การยกกำลังด้วย .^ • ใช้ .^ >> x = 1:3; >> y = 1:3; >> x.^y%element ของ x ยกกำลังด้วย element ของ y ที่ตรงกัน ans = 1427 » 2.^x% 2 ยกกำลังจาก 1 ถึง 3 ans = 2 4 8
การกำหนดค่าอาเรย์ • เครื่องหมาย; ใช้ระบุว่าให้เริ่มแถวใหม่ หรือใช้การกด Enter ก็ได้ » g=[1 2 3 4 5 6 7 8 9] g = 1 2 3 4 5 6 7 8 9 » c=[1;2;3] c = 1 2 3
Transpose • ใช้ตัวดำเนินการ’ » a=[1 2 3] a = 1 2 3 » c=a' c = 1 2 3
Transpose สำหรับเลขเชิงซ้อน • ถ้าข้อมูลเป็นค่าเชิงซ้อน นอกจากจะทำการสลับแถวกับคอลัมน์แล้ว ยังเปลี่ยนค่าให้เป็นค่าสังยุคของค่าเดิมด้วย (Transpose Conjugate) >> a = x+i*y a = 1.0000 + 1.0000i 2.0000 + 2.0000i 3.0000 + 3.0000i >> c = a' c = 1.0000 - 1.0000i 2.0000 - 2.0000i 3.0000 - 3.0000i >> x = 1:3; >> y = 1:3;
เมตริกซ์ • คืออาเรย์ข้อมูลสองมิติ • การบวกและการลบเมตริกซ์มีลักษณะเช่นเดียวกันกับการบวกและลบของอาเรย์ • เมตริกซ์ที่นำมาบวกหรือลบกันต้องเป็นเมตริกซ์ที่มีขนาดเท่ากัน • การคูณและการหารของเมตริกซ์แตกต่างจากการคูณและหารของอาเรย์
การคูณเมตริกซ์ • ใช้เครื่องหมาย * • การคูณกันของเมตริกซ์ A และ เมตริกซ์ B จำนวนคอลัมน์ของ A จะต้องเท่ากับจำนวนแถวของ B • ถ้าเมตริกซ์ A มีขนาด m p และเมตริกซ์ B มีขนาด p n ผลลัพธ์ของการคูณระหว่างเมตริกซ์ A และ B จะมีขนาด m n • โดยปกติ AB จะมีค่าไม่เท่ากับ BA
ตัวอย่างการคูณเมตริกซ์ตัวอย่างการคูณเมตริกซ์ » A = [6 -2;10 3;4 7]; » B = [9 8;-5 12]; » A*B ans = 64 24 75 116 1 116
ตัวอย่าง คำนวณสมการเชิงเส้น • มีสมการเชิงเส้น 3 ตัวแปร 3 สมการ ดังเช่น 1x1 + 2x2 +3x3 = 366 4x1+ 5x2 + 6x3 = 804 7x1 +8x2 + 0x3 = 351
วิธีทำ 1.สร้างเมตริกซ์ A และ B » A=[1 2 3;4 5 6;7 8 0] A = 1 2 3 4 5 6 7 8 0 » B=[366;804;351] B = 366 804 351
วิธีทำ 2. ในการที่จะหาคำตอบได้นั้น เมตริกซ์ A ต้องมีดีเทอร์มิแนนท์ที่ไม่เป็น 0 ใช้ฟังก์ชัน det(A) หาค่าดีเทอร์มิแนนท์ของ A » det(A) ans = 27
วิธีทำ 3. เมื่อค่าดีเทอร์มิแนนท์ไม่เป็น 0 แล้วก็สามารถหาคำตอบที่เป็น x=A-1B ใช้ฟังก์ชัน inv(A) หาค่า inverse matrix ของ A » x=inv(A)*B x = 25.0000 22.0000 99.0000
ตัวอย่าง การวิเคราะห์ค่าใช้จ่ายในการผลิต
คำนวณหา • ค่าใช้จ่ายในแต่ละกระบวนการผลิตสำหรับผลิตภัณฑ์ชนิดที่ 1 จำนวน 1 ชิ้น • ราคาต่อหน่วยในการผลิตสินค้าแต่ละชนิด • ค่าใช้จ่ายทั้งหมด หากต้องการผลิตสินค้า • ชนิดที่ 1 จำนวน 10 ชิ้น • ชนิดที่ 2 จำนวน 5 ชิ้น • ชนิดที่ 3 จำนวน 7 ชิ้น
1. ค่าใช้จ่ายในแต่ละกระบวนการผลิตสำหรับผลิตภัณฑ์ชนิดที่ 1 จำนวน 1 ชิ้น 2. ราคาต่อหน่วยในการผลิตสินค้าแต่ละชนิด 3. ค่าใช้จ่ายทั้งหมด หากต้องการผลิตสินค้า • ชนิดที่ 1 จำนวน 10 ชิ้น • ชนิดที่ 2 จำนวน 5 ชิ้น • ชนิดที่ 3 จำนวน 7 ชิ้น
วิธีทำa) ค่าใช้จ่าย = ค่าใช้จ่ายต่อเวลา x จำนวนเวลาที่ใช้ในการผลิต • กำหนดค่าใช้จ่ายต่อชั่วโมงเป็นชนิดเวกเตอร์แถวในชื่อตัวแปร hourly_costs • กำหนดจำนวนชั่วโมงที่ต้องใช้ในการผลิตผลิตภัณฑ์ 1 เป็นชนิดเวกเตอร์แถวในชื่อตัวแปร hours_1 • คำนวณหาค่าใช้จ่ายในแต่ละกระบวนการโดยการใช้การคูณอาเรย์ » hourly_cost = [10, 12, 14, 9]; » hours_1 = [6, 2, 3, 4]; » process_cost_1 = hourly_cost.*hours_1 process_cost_1 = 60 24 42 36
วิธีทำb) ราคาต่อหน่วยของผลิตภัณฑ์1 = hourly_costs * hours_1
วิธีทำb) ราคาต่อหน่วยของผลิตภัณฑ์2 = hourly_costs * hours_2 » hours_2 = [5, 3, 2, 0]; สร้างอาเรย์ hours_2
วิธีทำb) ราคาต่อหน่วยของผลิตภัณฑ์3= hourly_costs * hours_3 » hours_3 = [4, 1, 5, 3]; สร้างอาเรย์ hours_3
วิธีทำ • การคำนวณหาราคาต่อหน่วยของทั้งสามผลิตภัณฑ์สามารถดำเนินการพร้อมกัน » unit_cost = hourly_cost * [hours_1’, hours_2’, hours_3’] unit_cost = 162 114 149
วิธีทำc) • การหาค่าใช้จ่ายทั้งหมดของการผลิตผลิตภัณฑ์แต่ละชนิด จำนวน 10 ชิ้น 5 ชิ้น และ 7 ชิ้น ตามลำดับ สามารถหาได้จากการคูณเมตริกซ์ » units = [10, 5, 7]; » total_cost = units*unit_cost’ total_cost = 3233