ประกาศ

สื่อดิจิทัลส่วนใหญ่เป็นหนังสือดิจิทัล ในรูปแบบของไฟล์ pdf และ epub เป็นส่วนใหญ่ และรูปแบบ cbr, djuv, mobi, html เป็นส่วนน้อย ซึ่งแน่นอนว่ามีตัวหนังสือและรูปภาพประกอบ นอกจากนี้ยังมีหนังสื
อที่อยู่ในรูปของไฟล์เสียงที่มีคนอ่านให้ฟัง ส่วนสื่อที่อยู่ในรูปของภาพเคลื่อนไหส่วนวก็จะเป็นวิดีโอ ซึ่งจะเป็นวิดีโอทางการศึกษานำไปใช้ประกอบการเรียนการสอนในรายวิชาต่างๆ ได้ ซึ่งบางสื่อสามารถดาวโหลดมาได้จากแหล่งต่างๆ บางสื่อต้องมีรหัสผ่าน หรือต้องมีการจ่ายเงินออนไลน์จึงจะอ่านได้

Tuesday 16 January 2018

บทที่ 2 การเขียนโปรแกรม ตัวแปร การกำหนดค่า และแสดงผล

Chapter 2 - Programming Variables, assignment and display 12
Loops 16
Tests 17
2 and 3D plots 18
Supplements on matrices and vectors 23
Calculation accuracy 29
Solving differential equations 30
 
  ในตัวอย่างที่ให้มาในเอกสารนี้ แต่ละบรรทัดจะนำหน้าด้วย “ --> “ คือคำสั่ง บรรทัดอื่นคือส่วนที่ได้จากคำสั่ง (ผลการคำนวณ, รายงานข้อผิดพลาด)  ไม่ต้องเขียน “ --> “ ในเอดิเตอร์ . ที่จะเริ่มต้นตอนนี้ที่ชี้ให้เห็นถึงความแตกต่างระหว่างบรรทัดคำสั่งและผลการคำนวณตามที่แสดงให้เห็นในคอนโซลหลังจากสำเนาและนำไปวาง เมื่อนำเสนอในรูปตารางหนึ่ง (โดยปราศยาก “ --> “ และไม่แสดงผลการคำนวณ)  คำสั่งถูกกำหนดชัดเจน เหมือนที่ควรจะพิมพ์ไว้ในเอดิเตอร์  ตัวแปร การกำหนดค่า และการแสดงตัวแปรไซแลบไม่ใช่ระบบพีชคณิตคอมพิวเตอร์  การคำนวณเฉพาะกับจำนวณตัวเลข  การคำนวณทั้งหมดสำเร็จลงได้ด้วยเมทริกซ์  แม้ว่าการดำเนินการนี้ไม่อาจสังเกตได้  แม้ว่ามโนทัศนฺ์ของเมทริกซ์ไม่เป็นที่รู้จัก เวคเตอร์ และ แถวลำดับ (sequences) ของจำนวนสามารถจะอธิบายได้ตามที่เป็น  จริงแล้วเมทริกซ์ของ 1xn มิติ หรือ nx1 และจำนวนหนึ่งๆโดยตัวเองเป็นเมตริกซ์มิติ  1 × 1.  ตัวแปรไม่จำเป็นต้องประกาศไว้ก่อนล่วงหน้า แต่ตัวแปรใดๆต้องมีค่าค่าหนึ่ง  ตัวอย่างเช่น การให้ได้มาค่าของตัวแปรหนึ่ง ซ่ึ่งยังไม่ได้กำหนดค่ามาก่อนก่อให้เกิดข้อผิดพลาด
 -->a !--error 4 Undefined variable : a
ถ้ามีค่าหนึ่งถูกกำหนดให้ตัวแปรหนึ่ง ก็จะไม่มีข้อผิดพลาดอีกต่อไป
 --> a=%pi/4
          a = 0.7853982
--> a
       a = 0.7853982
ตัวแปรอาจเป็นชื่อใดชื่อหนึ่งได้ที่ไม่ได้กำหนดไว้ก่อนโดยระบบ
--> Piby2=%pi/2
           Piby2 = 1.5707963
กล่าวถึงคล้ายกับฟังก์ชันไซแลบ  ชื่อตัวแปรหนึ่งๆจะต้องมีตัวอักขระหรืออักขระพิเศษ

ผลการคำนวณที่ไม่ได้กำหนดให้ตัวแปร จะกำหนดให้ตัวแปรที่เรียกว่า ans: โดยอัตโนมัติ
-->3*(4-2)
   ans = 6.
-->ans
    ans = 6.

     ฟังก์ชัน(Functions)
ฟังก์ชันเป็นแนวทางที่เป็นธรรมชาติง่ายที่สุดที่จะคำนวณจากตัวแปร และให้ได้ผลลัพธ์จากตัวแปร.
นิยามของฟังก์ชันหนึ่งเริ่มต้นด้วย function และจบด้วย endfunction ตัวอย่างเช่นในการแปลง euros(e) ให้ได้คำตอบเป็นดอลล่าdollars (d) ด้วยอัตราการแลกเปลี่ยน exchange rate (t),   โดยกำหนดdollars function  ตัวแปรที่มีคือ e และ t  และ image  คือ d
 -->function d=dollars(e,t);
       d=e*t; endfunction
-->dollars(200,1.4) ans = 280.

ตามปกติแล้วฟังก์ชันเชิงจำนวนหรือตัวเลข เป็นฟังก์ชันของตัวแปรจริงหนึ่ง ตัวอย่างเช่น ฟังก์ชัน f และ ฟังก์ชัน g ถูกกำหนดโดยใช้คำสั่งต่อไปนี้

-->function y=f(x); y=36/(8+exp(-x)); endfunction
-->function y=g(x); y=4*x/9+4; endfunction

การกำหนดฟังก์ชันแล้วสามารถใช้เพื่อคำนวณหาค่าดังนี้
--> f(10) ans = 4.4999745
--> g(12.5) ans = 9.5555556

การกำหนดค่าให้ตัวตัวแปรหนึ่ง (requesting the assignment of a variable)
การกำหนดค่าให้ตัวแปรทำใด้ง่ายโดยการใช้เครื่องหมายกระทำ “ = “

Display 
Writing 
เพียงแต่พิมพ์ชื่อของตัวแปรหนึ่งๆ ก็จะแสดงผลค่าของตัวแปรนั้น นอกจากว่ามีเครื่องหมายเซมิโคลอน  “ ; “ อยู่ตอนท้ายของบรรทัดคำสั่ง
Brackets
เมทริกซ์ถูกกำหนดขึ้นโดยใช้วงเล็บเหลี่ยม (square brackets).  ตามที่กล่าวถึงมาก่อนแล้ว การคำนวณเมทริกซ์ เป็นรากฐานของการคำนวณในไซแลบ  ช่่องว่าง หรือ คอมม่าใช้ในการแยกคอร์ลัมน์ และเซมิโคลอนใช้ในการแยกแถว  เพื่อที่จะกำหนดเวคเตอร์คอร์ลัม  และให้ผลการแสดงเป็นคอร์ลัมดังนี:

-->v=[3;-2;5]
  v =
        3.
     - 2.
        5.

เพื่อกำหนดเวคเตอร์แถว และให้แสดงผลแถวของเมทริกซ์ดังนี้

-->v=[3,-2,5]
  v =
      3. - 2.  5.

หมายเหตุ  คำสั่งนี้สามารถพิมพ์ออกมาภายใต้รูปแบบ  v=[3 -2 5] เพียงเว้นช่องว่างระหว่างสมาชิกในวงเล็บ

เพื่อที่จะกำหนดเมทริกซ์และให้แสดงผลแบบในแนวตั้ง หรือ แท่ง (tabular display)

-->m=[1 2 3;4 5 6;7 8 9]
     m =
          1.  2.  3.
          4.  5.  6.
          7.  8.  9.

หมายเหตุ คำสั่งนี้สามารถพิมพ์ออกมาภายใต้รูปแบบ m=[1,2,3;4,5,6;7,8,9]

ฟังก์ชัน disp
disp ต้องใช้ร่วมกับวงเล็บเสมอ   กับเวคเตอร์ v ที่กำหนดไว้ก่อนหน้านี้

 -->v(2)
   ans =
        - 2. -->
disp(v(2)) - 2.

เพื่อแสดงผลสตริง(มักอยู่ในรูปประโยค) ให้นำข้อความหรือสตริงที่ต้องการแสดงอยู่ในเครื่องหมายคำพูด
-->disp("Bob won")
          Bob won
เพื่อแสดงผลการควบรวมของคำและค่าต่างโดยใช้คำสั่งสตริง  ซึ่งแปลงค่าไปเป็นสตริงตัวอักขระ โดยการใช้เครื่องหมายบวก “ + “ ระหว่างส่วนที่แตกต่างกัน

-->d=500;
 -->disp("Bob won "+string(d)+" dollars")
          Bob won 500 dollars

ถ้าประโยคประกอบด้วยเครื่องหมายคำพูดเดี่ยว (single quote)  การแสดงแบบแรกจำต้องใช้การซ้ำสองในสตริงที่ต้องการแสดงให้ถูกตำแหน่ง

-->disp("It''s fair")
     It's fair

 การเพิ่มที่ละสเต็บในลูป (Loops Incrementation)
ตัวกระทำโคลอน “ : “ ใช้ในการกำหนดเวคเตอร์ของจำนวน ที่ซึ่งประสานลำดับแบบเลขคณิต  โดยให้เครื่องหมาย << สำหรับค่าเริ่มต้น : สเต็ป : ค่าปลายด้วยเครื่องหมาย>> (beginning value<<: ending="" step:="" value="">>.  เป็นไปได้ที่ไม่เข้าสู่ค่าปลายหรือท้าย  ถ้าไม่ระบุสเต็บที่เพิ่มหรือลด โดยมีค่าปริยายคือ 1

ตัวอย่างเช่น เพื่อกำหนดเวคเตอร์แถวของเลขจำนวนเต็ม ซึ่งการเพิ่มขึ้นสเต็บละ 1 จาก 3 และ 10
-->3:10
  ans =
         3.  4.  5.  6.  7.  8. 9. 10. or

ซึ่งการเพิ่มขึ้นสเต็ปละ 2 จาก 1 ถึง 10  ดังนี้
 -->1:2:10
  ans =
         1.  3.  5.  7.  9.

หรือเป็นไปในทางที่ลดลงทีละสเต็ปของ 4 จาก 20 to 2:
 -->u=20:-4:2
  u = 20. 16. 12. 8. 4.

for
สำหรับโครงสร้างลูปที่ง่ายที่สุดสำหรับจำนวนที่ตายตัวของการทำงานซ้ำ เขียนได้เป็น  for … end.
ตัวอย่าง:  ให้คำนวณ 20 เทอมของลำดับที่กำหนดโดยการเกิดซ้ำตามความสัมพันธ์คือ
{u1 = 4}
{un+1 = un + 2n +3}

 Algorithm                                                           Scilab Editor
Put 4 in u(1)                                                         u(1)=4
For n from 1 to 20                                                for n=1 :20
u(n+1) takes the value u(n)+2n+3                       u(n+1)= u(n)+2*n+3;
and u(n)                                                                display ([n,u(n)])
display n and u(n)                                                 end
End for                                                   

 While
เพื่อหยุดลูปเมื่อกำหนดเป้าหมายที่จะไปถึง,  โดยใช้ while … end

ฉันได้ปลูกต้นคริสมาสในปี 2005วัดได้สูง 1.20 m.  ต้นไม้เติบโตขึ้นปีละ 30 ซม. ฉันตัดสินใจที่จะตัดต้นไม้นี้เมื่อมันสูงเกินกว่า 7 เมตร ในปีใดที่ฉันจะต้องตัดต้นไม้นี้

Algorithm                                                          Scilab Editor
Put 1.2 in h (h = tree height)                                 h=1.2;
Put 2005 in y (y = year)                                        y=2005;
While h<7 h="" nbsp="" p="" while="">      h takes the value h+0.3 (the tree grows)          h=h+0.3;
      y takes the value y+1 (one year passes)           y=y+1;
 End while                                                               end
  Display y (the final year)                                     disp("I will cut the.. tree in "+string(y))


หมายเหตุ เมื่อคำสั่งหนึ่งยาวเกินกว่าที่จะเขียนในบรรทัดเดียว เอดิเตอร์จะรวมบรรทัด  สามารถทำได้โดยใช้สองจุด“ .. “ (two dots) ก่อนที่จะไปยังบรรทัดต่อไป


Tests
Comparison operators
การทดสอบที่มีประโยชน์รวมทั้งการเปรียบเทียบจำนวนหรือหาว่าประโยคคำสั่งใดเป็นจริงหรือเป็นเท็จ ข้างล่างนี้คำสั่งที่สอดคล้องกัน

 Equal     Different      Less      Greater      Less or equal      Greater or equal
   ==         <>               <                >              <=                         >=

True         False          And           Or                No
  %T          %F              &              |                  ~

หมายเหตุ  จงระมัดระวังกับค่าความถูกต้องในการคำนวณ   การคำนวณเป็นแนวทางเข้าสู่ และ “ == “ บางครั้งจะให้ผลลัพธ์ที่ผิดพลาด (ดูค่าความละเอียดใหนการคำนวณหน้า 30)

เพื่อเปรียบเทียบเวคเตอร์ 2 เวคเตอร์หรือ 2 เมทริกซ์ การทดสอบ “ == “ และ “ <> “ จะเปรียบเทียบเทอมต่อเทอม ตัวอย่างเช่น:
-->X=[1,2,5]; Y=[5,3,5];
-->X==Y
  ans =
         F  F  T

เพื่อทดสอบ 2 เวคเตอร์เท่ากันหรือไม่  ใช้ isequal  และใช้ ~isequal  ถ้า แตกต่างกัน
-->isequal(X,Y)
  ans =
        F
-->~isequal(X,Y)
  ans =
        T

If…then
ประโยคคำสั่งเงื่อนไขพื้นฐานดังต่อไปนี้
 • if … then … else … end,
 • if … then … elseif … then … else … end.

if … then  ต้องเขียนอยู่บนบรรทัดเดียวกัน และเช่นเดียวกับ elseif … then.

ตัวอย่าง  อลิษทอยลูกเต๋า 3 ลูก
    • If she gets three 6’s she wins $20,
    • If she gets three identical numbers different from 6 she wins $10,
    • If she gets two identical numbers she wins $5,
    • Otherwise she wins nothing.

ให้จำลองแบบการทดลองทอยลูกเต๋า และคำนวณการชนะรางวัลของอลิษโดยใช้ฟังก์ชัน
    • grand (see page 22),
    • unique(D)which keeps only once the values that appears several times in D,
    • length(unique(D)) which returns the size of the obtained vector, that is to say 1 if three dice are           equal, and 2 if two dice are equal.

Algorithm                                                                 Scilab Editor

Put the three values in D                                          D=grand(1,3,"uin",1,6);
If Alice gets three 6, then Alice wins 20 dollars      if D==[6,6,6] then W=20;
Else if she receives three identical values,               elseif length(unique(D))==1                                    then    Alice wins 10 dollars                                      hen W=10;
Else, if she receives two identical values,                 elseif length (unique(D))==2
then Alice wins 5 dollars                                           then W=5;
Otherwise                                                                   else
 Alice wins nothing                                                     W=0;
End if                                                                          end                                                                 
Display Alice's winnings                                            disp("Alice wins "+.. string(W)+ " dollars")

 2-D and 3-D plots 
คำสั่ง พล็อตใช้ในการพล็อตกราฟในระนาบ สีและการปรากฏให้เห็นสามารถระบุโดยการใช้ตัวบ่งชี้สีและรูปแบบจุดพล็อตภายในเครื่องหมายคำพูด
   • Colors "b" = blue (by default), "k" = black, "r" = red, "g" = green, "c" = cyan, "m" = magenta, "y" = yellow, "w" = white.
   • Point styles Joined (by default), or ".", "+", "o", "x", "*". Other options are available with: "s", "d", "v", "<", and ">".

การพล็อตกราฟพื้นฐาน (Basic plots)
การพล็อตจุดกราฟ
ให้พล็อตจุด A(1 ; 2) ด้วยจุดสีแดง

Scilab Editor                                                         Graphics Window

plot(1,2.".r")
                                                        

พล็อตเซ็กเมนต์(To plot a segment)
ให้พล็อตเซ็กเมนต์[AB] ด้วยสีฟ้า(่โดยปริยาย) ด้วย A(1 ; 2) และ B(3 ; 5).

Scilab Editor                                                         Graphics Window

plot([1,3],[2,5])                                         
                                                                                                                                                    
การพล็อตเคิร์ฟแนวราบโดยฟังก์ชัน y=f(x) (plot of plane curves by function y=f(x))
สำหรับฟังก์ชัน x → f(x)  ค่าของ x ระบุไว้โดยใช้ คำสั่ง linspace  โดยเขียนคำสั่งดังนี้ x=linspace(a,b,n); ซึ่ง a เป็นค่าน้อยที่สุดของตัวแปร x, b เป็นค่าสูงสุดของ x, และ  n  จำนวนค่าที่คำนวณระหว่างค่า a และ b   อย่าลืมว่าสัญลักษณ์ “ ; “  นอกจากนี้แล้วทุกค่า n ของ x จะถูกนำออกมาแสดง

ตัวอย่างเช่น   พิจารณาฟังก์ชัน 2 ฟังก์ชัน f  และ g  กำหนดอยู่ในช่วง [-2 ; 5] โดยที่:
                    f(x) = (x^2 + 2x)e^-x , และ and g(x) = sin x/2

ด้วยโปรแกรมข้างล่างนี้ ได้พล็อตเคิร์ฟกำหนดโดย f , สีฟ้าโดยปริยาย

Scilab Editor                                                         Graphics Window

function y=f(x)                                           
   y=(x^2+2*x)*exp(-x)
endfunction
x=linspace(-2,5,50);
plot(x,f)                                 
                                                                      

โดยการเพิ่มโปรแกรมข้างล่าง จะได้การพล็อตของเส้นเคิร์ฟ 2 เส้น ที่เป็นของ f สีแดง และของ g สีเขียว
การพล็อตที่ผ่านมาล้างออกไปโดยใช้คำสั่ง clf(“ clear figure “).

Scilab Editor                                                 Graphics Window

function y=g(x)
    y=sin(x/2)
endfunction
x=linspace(-2,5,50);
clf
plot(x,f,"r",x,g,"g")                               
                                                                                                                       
พล็อตชุดของจุด(Plots of sequences of points)
Terms of a sequence
ในกรณีทั่วไปเกือบทั้งหมดจะพล็อตไปตามลำดับของจุด M(n,u(n)) หลังจากการคำนวณของพิกัดฉาก u(n) ของเวคเตอร์u. plot(u,"*r") บ่งถึงสไตล์และสีของจุดในเครื่องหมายคำพูด  สีแดงและรูดดาวที่ไม่เชื่อมต่อ  โดยปริยายแล้วจุดต่างๆ ถูกพล็อตด้วยสีฟ้า และ เชื่อมต่อกัน

Scilab Editor                                                        Graphics Window

for n=1:50
   u(n)=(-0.8)^n;
end clf;
plot(u,"*r")                                             
              


ข้อมูลสถิติ 2 ตัวแปร (Bivariate statistical data)
 ข้อมูลสถิติ 2 ตัวแปรถูกกำหนดขึ้นในรูปของเวคเตอร์ 2 เวคเตอร์  เรียกว่า X และ ํBivariate statistical data are given in the form of two vectors: let’s call them X and Y.
plot(X,Y,"<")  พล็อตสแกตเตอร์กราฟของ M(Xi;Yi) (scatter plot of M(Xi;Yi) แสดงจุดพล็อตด้วยสามเหลี่ยมสีฟ้า

Scilab Editor                                                         Graphics Window

X=[1,3,3,7,7,9,10];
Y=[8,7,5,5,4,2,2];
   clf; plot(X,Y,"<")                                 
                                                   
                   

การพล็อตกราฟ 3 มิติ (Plots in 3 dimensions) 
ไซแลบสามารถใช้ในการพล็อตพื้นผิว เคิร์ฟในสเปสซ์ ด้วยออพชันมากมายสำหรับจัดการผิวด้านที่ซ่อนบังไว้  สีของผิวหน้า, จุดในการมอง ฯลฯ ตัวอย่างต่อไปนี้แสดงการพล็อตกราฟ 3-D

ฟังก์ชัน surf สามารถใช้ในการพล็อตพื้นผิว  ฟังก์ชันนี้มีตัวแปรนำเข้า 3 ตัวแปร x, y และ z.   x และ y เป็นเว็คเตอร์ขนาดare respectively vectors of size m and n ตามลำดับ สอดคล้องกับจุดบนแกน(0x) และ(0y).   z คือ เมทริกซ์ขนาดมิติ m×n ด้วยองค์ประกอบ zij  สอดรับกับความสูงของจุดตามพิกัดX xi  และพิกัดaY yi

เพื่อที่จะพล็อตพื้นผิวโดยฟังก์ชันในรูป z = f(x,y)   ซึ่งต้องทำดังต่อไปนี้
    • กำหนดฟังก์ชัน f
    • คำนวณ z=feval(x,y,f)'
feval(x,y,f) คืนค่าเป็นreturns the m×n matrix  ซึ่งองค์ประกอบ ij คือ f(xi,yi) ซึ่งจะถูกทรานสโพสโดยใช้เครื่องหมายคำพูดเดี่ยว“ ' “
    • Execute surf(x,y,z).

เพื่อจะพล็อตพื้นผิว z = 2x^2 + y^2 (elliptic paraboloid):

Scilab Editor                                                      Graphics Window function
z=f(x,y)
  z=2*x^2+y^2;
endfunction
  x=linspace(-1,1,100);
  y=linspace(-2,2,200);
  z=feval(x,y,f)';
clf
surf(x,y,z)
                                               
                

เคิร์ฟในสเปสซ์อาจพล็อตโดยใช้ ฟังก์ชัน param3d  โดยที่ param3d มี 3 อาร์กูเมนต์ x, y และ z,  แต่ละเวคเตอร์มีมิติเดียวกัน และสอดคล้องกับจุด(xi,yi,zi) บนเคิร์ฟ

เพื่อพล็อต helix กำหนดโดยdefined by (x = cos t , y = sin t , z = t):

Scilab Editor                                                           Graphics Window
t=linspace(0,4*%pi,100);
param3d(cos(t),sin(t),t)
                                                           
                            
การจำลองแบบและสถิติ (Simulations and statistics)
มีหลายฟังก์ชันที่นำมาใช้ได้ในไซแลบเพื่อใช้ในการจำลองแบบได้เร็วและมีประสิทธิภาพ

ลำดับการสุ่ม (Random  Sequences)     
   • grand(1,p,"uin",m,n) คืนกลับเป็นเวคเตอร์หนึ่ง ของ ลำดับการสุ่มจำนวนเต็ม p (p random integer sequences) ระหว่าง m และ n ด้วยจำนวนเต็มบวก p , m และ n เป็นจำนวนเต็มและ m ≤ n.

-->t = grand(1,4,"uin",1,6)
     t =
          3.   1.   3.   6.

     • grand(1,p,"unf",a,b) คืนกลับค่าเป็นเว็คเตอร์หนึ่งของลำดับการสุ่มจำนวนจริงp (p random real sequences) ระหว่าง a และ b ด้วยจำนวนเต็มบวก , a และ b เป็นจำนวนจริง และ  a ≤ b.

-->tr = grand(1,2,"unf",-1,1)
     tr =
         - 0.7460264    0.9377355

สถิติ (Statistics) 

ฟังก์ชันมาตรฐานทางสถิติทั้งหมดแสดงรายการไว้ในหน้า 32
    คิดไว้ในใจเป็นการเฉพาะกล่าวคือ
    • ฟังก์ชัน  bar(x,n,color) ซึ่งวาดกราฟแท่ง(bar graphs):

Scilab Editor                                                     Graphics Window 
x=[1:10];
n=[8,6,13,10,6,4,16,7,8,5];
clf; bar(x,n)
                                                     

      • สำหรับกราฟแท่งที่แทน 2 ชุดด้านต่อด้าน(two sets side by side): พิจารณาชุดของค่า X และ 2 ชุดลำดับของจำนวน n1 และ n2.  สำหรับการพล็อต n1 และ n2 ต้องเป็นเว็คเตอร์คอร์ลัมน์ นั่นคือทำไมจึงนำทรานสโพสมาใช้ในตัวอย่างข้างล่าง

 Scilab Editor                                                Graphics Window
X=[1,2,5];n1=[5,10,5];n2=[6,8,7];
bar(X,[n1',n2'])
                                                         

อาร์กูเมนต์ทางเลือกสีกำหนดสีตามฟังก์ชันการพล็อต


ข่าวสารเพิ่มเติมของเมทริกซ์และเวคเตอร์ (Additional information on matrices and vectors)
การจัดการองค์ประกอบเว็คเตอร์
 วงเล็บเหลี่ยมถูกนำมาใช้เพื่อกำหนดเมทริกซ์  สเปสซ์หนึ่งหรือคอร์ลัมน์หนึ่งๆถูกใช้เพื่อสลับจากคอร์ลัมน์หนึ่งไปเป็นอีกคอร์ลัมน์ และเซมิโคลอนถูกใช้เพื่อสลับจากบรรทัด(line)ไปเป็นอีกบรรทัด ดังนี้

-->m=[1 2 3;4 5 6]
m =
      1.    2.    3.
      4.    5.    6.

วงเล็บใช้เพื่อจัดการองค์ประกอบของเมทริกซ์หรือปรับเปลี่ยนองค์ประกอบ

หมายเหตุ คำสั่งนี้สามารถพิมพ์ภายใต้รูปแบบ m=[1,2,3;4,5,6]

-->m(2,3)
    ans =
           6.
-->m(2,3)=23
     m =
         1.    2.    3.
         4.    5.    23.

โอเปอร์เรเตอร์ “ : “ ถูกนำมาใช้เพื่อจัดวางแถวทั้งหมดหรือคอร์ลัมน์ทั้งหมดของเมทริกซ์หนึ่งๆ  เพื่อมองหาแถวที่ 2 ของเมทริกซ์ m  พิมพ์ดังนี้

-->m(2,:)
      ans =
            4.   5.   23.

และคอร์ลัมน์ที่ 3 ดังนี้
-->m(:,3)
    ans =
          3.
         23.

เพื่อให้ได้มาของการทรานซโพสของเมทริกซ์หนึ่งหรือเว็คเตอร์หนึ่ง ให้ใช้สัญลักษณ์เครื่องหมายคำพูดเดี่ยว “ ' “:
-->m'
    ans = 1.    4.
              2.    5.
              3.    23.

ตัวกระทำ (Operations)
การกระทำ “ * “, “ / “ เป็นการกระทำของเมทริกซ์  เพื่อทำให้ทำให้การกระทำไปตามองค์ประกอบ (element wise operations) เราจำต้องใส่จุดก่อนเครื่องหมายกระทำ: “ .* “, “ ./ “.

 -->A=[1,2,3;4,5,6]
          A =
               1.   2.  3.
               4.   5.  6.

-->B=[1;1;2]
        B =
           1.
           1.
           2.

-->A*B
     ans =                                                               การคูณเมทริกซ์ (Matrix multiplication)
            9.
           21.


-->A*A !--error 10                                         
Inconsistent multiplication.                                 Dimensions are not consistent


-->A.*A
     ans = 1.    4.     9.                                             Element wise multiplication
              16.   25.   36.

-->2*(A+2)
     ans =
            6.     8.    10.                                             The operation is performed on each element
           12.   14.   16.                                              because 2 is a number

-->A/A                                                               กำหนดให้เมทริกซ์ X ที่ซึ่ง X*A = A
     ans =                                                         
             1.                   1.518D-16                      ผลลัพธ์จริงๆคือ 1.   0
             3.795D-15     1.                                                            0    1
                                                                          สำหรับเหตุผลความถูกต้องในการคำนวณ ผลลัพธ์อาจ
                                                                          แตกต่างกันเล็กน้อยดขึ้นอยู่กับรุ่นของไซแลบและระบบ
                                                                          ปฏฺิบัติ การที่ใช้ (ให้ดูความละเอียดในการคำนวณ หนา 29).
-->A./A
    ans =
          1.   1.   1.
          1.   1.   1.

กำหนดให้เมทริกซ์หารตามองค์ประกอบ (divided element wise) ในกรณีของเว็คเตอร์
-->C = 1:4
     C = 1. 2. 3. 4.

-->C*C !--error 10                                         Dimensions are not consistent
Inconsistent multiplication. 

-->C.*C
         ans =
                1. 4. 9. 16.

No comments:

Post a Comment

การสืบค้นสื่อดิจิทัลจากอินเตอร์เน็ตสำหรับทุกคน

ตามรายการหน้าปกหนังสือที่ให้มาบางเล่มสามารถที่จะค้นหาได้จากอินเตอร์เน็ต จากเครื่องจักรการค้น ต่างๆ บางเล่มก็สามารถเปิดอ่านได้ บางเล่มไม่สามารถเปิดอ่านได้เนื่องจากลิขสิทธิ์ เปิดอ่านได้เมื่อมีรหัสผ่านที่เสียค่าใช้จ่าย