86
Matlab Tutorial ดร. กฤษฎา ไชยสาร

MatlabTutorial - Krisada Chaiyasarn · •Numerical-Programming-(Matlab,Mathematica,Mathcad) •Easy-to-learn •Good-for-general-and-scientific-computation •Good-visualization-and-graphics

  • Upload
    lekhue

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Matlab Tutorial

ดร. กฤษฎา ไชยสาร

Outline

• Introduction  to  Matlab

• Matlab Anatomy

• Matlab as  calculators

• Built-­‐in  functions

• Matlab Environment

• Arrays  and  Vectors

• Basic  Plot 2

Matlab

• High-­‐level  language  for  technical  computing

• Typical  uses• Model  prototyping• Data  Analysis• Mathematical  computations• Algorithmic  development

• Benefits• Simplifies  the  analysis  of  mathematical  models• Easy  to  code  and  debug  – with  speed  penalties• Extensible  with  other  programming  languages• Good  visualization  tools 3

Where  is  Matlab in  computing  world

• Spreadsheet• Generic  and  easy  to  use• Good  graphics• Decent  extendible  using  macros  and  VBA

• Numerical  Programming  (Matlab,  Mathematica,  Mathcad)• Easy  to  learn• Good  for  general  and  scientific  computation• Good  visualization  and  graphics• Good  connectivity  to  other  applications

• Compiled  Languagues (C/C++)• Hard  to  learn,  difficult  to  debug• Require  different  program  for  visualization  if  not  provided  in  IDE• Platform  dependent 4

Matlab

• High-­‐level  language  for  technical  computing

• Typical  uses• Model  prototyping• Data  Analysis• Mathematical  computations• Algorithmic  development

• Benefits• Simplifies  the  analysis  of  mathematical  models• Easy  to  code  and  debug  – with  speed  penalties• Extensible  with  other  programming  languages• Good  visualization  tools 5

Matlab basics

• Matlab is  a  case  sensitive  language,  e.g.  c  and  C  is  different  

• Can  be  used  in  interactive  mode  (platform  independent)  or  compiled  version  (platform  specific)

• All  data  structures  in  Matlab are  Matrix

• Various  data  types  exist,  e.g.  • single  precision,  • double  precision,  • Integer  (8  bit)

• Advanced  data  structures  available  including  object-­‐oriented  programming  and  overload  operators

6

Matlab anatomy

• Command  window

• Current  Directory  Window

• Figure  Window

• Workspace  Window

• M-­‐File  Editor/Debugger  Window

• Matlab Path  Window

• Command  History  Window 7

8

 

9

• Interactive,  like  a  calculator• Use  up-­‐down  arrow  key  to  get  command  history• Cut  and  paste  work  in  this  window

 

Command  window  

10

• Quick  access  to  all  files  and  folders  in  the  current  path• Give  a  brief  description  where  files  are  commented  out

 

Current  Directory  Window  

11

• Color  Codes  MATLAB  built-­‐in  function• Provide  debugging  tools• Breakpoints• Step  in  and  out• Break  on  error,  warnings,  and  overflows

• Tab  to  autocomplete

 

Editor/Debugger  

12

• Display  graphic  from  Command  window,  M-­‐file  or  MEX-­‐file• PlotEdit – allows  interactive  changes  to  plots  (e.g.  legend,  title,  etc.)• Property  Editor  – allow  changes  to  all  Handle  Graphics  properties

 

Figure  Window  

Matlab – Figure  Property  Editor    

13

Workspace  

14

• All  variables  are  stored  and  show  in  this  window  until  the  command  ‘clear’  is  called

 

Array  Editor  

15

• Can  inspect  values  in  variables  like  in  spreadsheet• Cut  and  paste  operations  works

 

Help  

16

• All  Help  can  be  accessed  through  help  window  or  from  Matlab website  

Path  window  

17

• Access  from  Set  Path

• Show  all  the  folders  and  set  all  folders  in  the  path  where  Matlab can  be  executed  from  

การใช Matlab เหมอนเครองคดเลข

•Matlab สามารถใชไดเหมอนเครองคดเลข สญลกษณคณตศาสตรสวนใหญสามารถใชไดใน Matlab เชน

>> 2+2

• สญลกษณทางคณตศาสตร + - * / คลายกบการเขยนสมการคณตศาสตร

• การยกกำลงใหใช ^ เชน 2^3

• การใชวงเลบใหยดหลกคณตศาสตรถาสมการยาวๆ เชน>> (2+3)/(2^4)

การใช Built-in Matlab ฟงกชน

•Matlab มฟงกชนคณตศาสตรมากมายทมากบโปรแกรม การใชฟงกชนใน Matlabตองมการ pass argument ซงเปนตวแปรหรอ input ทเราตองการให Matlab หาคาให เชน

>> exp(1)

>>1.2*sin(40*pi/180 + log(2.4^2))

• เวลามการคณตองใชเครองหมาย * เสมอ เชน >> 2*(4+9) ไมใช

>>2(4+9)

การใช Built-in Matlab ฟงกชน

•ฟงกชน Trigonometry ใน Matlab ตองมการใชเรเดยน ถาตองการใชดกรตองมการเปลยนโดยคณดวย pi/180 เชน sin(30*pi/180)

•ฟงกชนลอกธรรมชาตคอ log ไมใช ln

ฟงกชนคณตศาสตรทวไปทมในแมทแลป

Matlab Environment

• การตงชอตวแปรในแมทแลปเพอเกบคำตอบหรอคาตางๆ สามารถสรางตวแปรพรอมกบใหคาตวแปรไดเลย เชน

>> deg = pi/180

• การสรางตวแปรในแมทแลปไมจำเปนตองกำหนดชนดของตวแปร แมทแลปจะเขาในไดเองวาเปน Double หรอ string แมทแลปทราบจากการทเรา assign คาใหตวแปร

• หลงจากสรางตวแปรแลวสามารถนำตวแปรมาใชตอได เชน>>1.2*sin(40*deg + log(2.4^2))

Matlab Environment

• อะไรคอ ตวแปร ans ในแมทแลป

• ถาตองการทราบวาใน work space ของเรามตวแปรอะไรบางใชคำสง who หรอ whos ใน command winder

• ถาตองการลบตวแปรออกจาก work space ใหใช clear name ซง name คอชอของตวแปร เชน clear deg

• ถาตองลบทกตวแปรใน work space ใหใชคำสง clear all

• ลองพมพและสงเกตดวาเกดอะไรขนเมอใชคำสง clc

การแสดงผลความละเอยด

• ถาตองการใหแมทแลปแสดงความละเอยดเพมใหใชคำสง format long เชน

>>format long

>>pi

• ถาตองการใหแสดงความละเอยดเหมอนเดมใหใช format short

การหาคำตอบหรอการหาความชวยเหลอใน Matlab

• ใหใชอนเตอรเนต โดยคำวา Matlab เปน keyword ผสม ฟงกชนสวนใหญสามารถหาไดดวยวธน

• ใหหาฟงกชน hyperbolic

• หรอใหพมพ help ตามดวยคำสงทอยากรวธใชใน command window เชน>>help sqrt

• ใหลองทดลองระหวาง >>5+6 และ >>5+6; ขอแตกตางระหวางม ; กบไมมตางกนอยางไร

การสราง Array หรอเวคเตอร

• การสรางเวคเตอรแนวนอนใหใช [] และระหวางสมาชกใหใช , หรอ ‘ ’ ในการแยกระหวางสมาชก เชน

>>[1 2 3 4 5]

>>[3,4,5,6,7]

• การสรางเวคเตอรแนวตงใหใช ; ในการแยกระหวางสมาชก เชน >>b = [2;3;4;5;6]

• การตอเวคเตอร เชน >>c = [b;5;6;7]

การสรางเวคเตอรโดยใชฟงกชนตางๆ

• แมทแลปมฟงกหลายอยางทมชวยใหการสรางเวคเตอรขนาดใหญตาง เชน>>1:6

>>2:0.3:4

• การใชฟงกชนในการสรางเวคเตอรเชน>>zeros(2,3)

>>ones(1,4)

>>linspace(1,4,100)

>>logspace(1,4,100)

การเลอกบางคาในเวคเตอร

• หลงจากสรางเวคเตอรแลวหากตองการใชบางคาในเวคเตอรใหใช index ในการเลอกคาในเวคเตอร เชน

>>a = [1:2:6 -1 0]

>>a(3)

>>a(2:5)

>>a(2:end)

>>a([1 3 4])

การใชสมการคณตศาสตรในเวคเตอร

• เวคเตอรสามารถ + - * / ไดตามปกตแตมขอจำกดคอตองม dimension ทสอดคลองกน

• การบวกและลบเวคเตอร เชน>>a = [1 3 4 5]

>>b = [2 4 5 6]

>>c = [1 4 5 6 7]

>> a + b

>> a + c (ใหสงเกตวาเกดอะไรขน)

การใชสมการคณตศาสตรในเวคเตอร

• การคณเวคเตอรเหมอนกนการคณเมททรกสปกตโดยท dimension ของเวคเตอรตองสมพนธกนถงจะคณกนได เชน

>>a*b’>>a*b (ใหสงเกตวาเกดอะไรขน)

• การคณหรอการหารทเปน element-by-element จำเปนตองมเครองหมาย . เสมอซงการทำเชนนคอการท เชน

>>a.*b

• ดงนน operator ทจำเปนตองมเครองหมาย . สำหรบ element-by-element คอ .* ./ .^

การวาดกราฟเบองตน

• แมทแลปมเครองมอมากมายทใชในการวาดกราฟจงทำใหโปรแกรมนมความนยมมากกวา Octave

• สำหรบการ plot กราฟสองมตในเบองตนมคำสงหลกคอ plot(x,y) โดยท x และ y จะเปนตวเลขหรอเวคเตอรกได เชน

>>deg = linspace(-pi,pi,50)>>y = sin(deg)>>plot(deg,y)>>hold on

• ลองใชคำสง plot(deg(10),y(10),’sr’) แลวสงเกตวาเกดอะไรขน

• หลงจากนนใหลองหาคำตอบใน Google เพอดวาจะทำอยางไรใหกราฟเปลยนสเขยว เราจะใชคำสงอะไรการใสแกน x และ y และถาเราจะใสหวขอของกราฟเราตองใชคำสงอะไร

สและมารคเกอรเบองตนใน Matlab

แบบฝกหด

• ตองสงกอนเรมเรยนในอาทตยเพอใหไดคะแนน• ใหใสคำตอบใน https://drive.google.com/drive/folders/0B4k-

nBbPPtoTb0xHMnBRdWNuT1k?usp=sharing โดยใหใชชอไฟลโดยใชรปแบบดงน week_รหสนกศกษา_ชอ เชน 1_589924556_krisada

แบบฝกหด

1. ใหหาคำตอบวาระหวาง πe กบ eπ อนไหนมคามากกวากนและมากกวาเทาไรโดยใหหาคำตอบโดยใชแมทแลป

2. ใหวาดกราฟ xe และ ex บนกราฟเดยวกนโดยใหใชกราฟคนละสโดยใหวาดกราฟในชวงระหวาง 0 ถง 5

3. ใหวาดกราฟใหมโดยใหวาดกราฟ y = xe – ex โดยใหวาดกราฟในชวง x อยระหวาง 0 ถง 5 จงหาคา x เมอ xe = ex

Outline

• การเขยนสครปท• การใช control statements

การเขยน Matlab สครปท

• สครปทคอไฟลแมทแลปชนดหนงมนามสกลคอ .m เปนไฟลทใชเมอมคำสงหลายๆคำสงทตองใชงานอยบอยๆ สครปทเปน Text file

• สามารถ Run สครปทโดยการพมชชอ Script ใน Command Window หรอการกดปม Run ใน Script Editor

• สามารถสราง Script ใหมโดยการกดปม + ใน Ribbon ขางบน

การเขยน Matlab สครปท

• ใหสรางสครปทตามดานลางหลงจากนนให Save โดยใช File -> Save As

• ควรตงชอสครปทใหดโดยไมควรขนตนดวยตวเลขหรอสญลกษณ• ให Save ไฟลขางลางโดยใชชอวา rectsin.m

• บรรทดทขนตนดวย % เปน comment ซงเปนบรรทดทแมทแลปไมถอวาเปนคำสง

การ Run สครปท Matlab

• สามารถ Run สครปทไดโดยการพมพ rectsin ใน Command Window

• จะเปนหาถาพมพตามขางตนเวลา Run สครปทแลวจะเกด Error ใหแก Error ตามทแมทแลปแนะนำ

• หลงจากแก Error ไดแลวให Run แมทแลปอกรอบ

การใช Control Statements – if…else

• การใช Control Statement เปนพนฐานทภาษาสวนใหญตองใชอยแลว• สำหรบ if…else เปนการสรางเงอนไขโดยม format ตามดานลาง• Expression คอ นพจนทเปน logical ซงมคำตอบเปนถก (True) หรอผด (False) ไดเทานน เชน 5 > 3 คำตอบเปนถก• Statements คอ คำสงตางๆในแมทแลปในการประมวลผลตอ• สำหรบแมทแลปนนการจบ Control Statements ตองลงทายดวย keyword ทชอวา

end เสมอ

การใช Control Statements – if…else

• ตารางขางลางไดสรปตวอยางการใช logical expression ไวทงหมด

การใช Control Statements – if…else

• ลองพมพคำสงตามดานลางเพอทำความเขาใจการใช if…else แลวให save ไฟลชอวา test_if_else.m

การใช Control Statements – switch

• ในกรณทมเงอนไขมากใหใช switch แทนโดยม syntax ตามทโชวดานลาง

การใช Control Statements – switch

• ใหศกษาการใช switch ตามตวอยางขางลางพรอมกบ save ไฟลชอ test_switch.m

การใช Control Statements – for loops

• ในกรณททมคำสงตองทำซำหลายๆครง การใช for เปน control statement ทมความจำเปนเปนอยางมาก โดยม syntax ตามดานลาง

• ตวแปร (variable) นนคอตวแปรทแมทแลปจะเรมใชตงแตตนของ vector จนสนสดตวสดทายของเวคเตอร

การใช Control Statements – for loops

• ใหลองทำตามตวอยางดานลางแลว save ไฟลใหชอวา test_for.m

การใช Control Statements – while loops

• สำหรบการทำคำสงซำๆโดยทไมทราบจำนวนในการทำซำ การใช while loop จงจำเปน

• สำหรบ while loop นม syntax ตามทโชวดานลางโดยท while loop จะไมเลกทำงานจนกวา expression จะเปนผด

การใช Control Statements – while loops

• ใหทำตามตวอยางขางลางแลว save ไฟลชอ test_while.m

การใช Control Statements – while loops

• ใหทำตามตวอยางขางลางแลว save ไฟลชอ test_while.m

Assignment

การหาคาของ π ทแทจรงนนมการใชหลายวธในการประมาณหาคา สำหรบวธของ James Gregory (1638-1675) นนไดเสนอวธการหาคานโดยการประมาณคาจาก arctangent ซงมพจนคลายกนกบ Taylor’s series ตามสมการดานลาง

โดยในป ค.ศ. 1646-1716 นกคณตศาสตรชอวา Gottfried Wilhelm Leibniz ไดใชสมการขางตนในการหาคาไพนโดยการแทนคา z = 1

ในป ค.ศ. 1699 นกคณตศาสตร Abraham Sharp ไดหาคาไพนไดละเอยดถงทศนยมตำแหนงท 72 อยางรวดเรว โดยวธการของเคาใชสมการขางตนเชนเดมเพยงแตเปลยนให z = 1/√3 แทน ในงานนเราจะใชคา z ทงสองคาในการประมาณคาของไพน

Assignment

ใหนกศกษาทำดงตอไปน

1. เขยนแมทแลปสครปทเพอประมาณหาคาของ arctangent ใน 50 พจนแรกโดยใช z = 1 และให plot กราฟเพอโชวคาของไพนทประมาณหาไดในแตละพจน และใหคำนวณหาความแตกตางระหวางคาไพนของจรงในแมทแลปกบคาทนกศกษาหาได โดยใหหาความแตกตางนในพจนท 25 30 และ 50

2. ใหเปลยนแปลงสครปทขางตนโดยใหใช z = 1/√3 แทน โดยใหใช 50 พจนแรกในการคำนวณและให plot กราฟบนรปเดม ใหหาคาความแตกตางระหวางคาไพนของจรงและคาทประมาณไดในพจนท 25 30 และ 50 และใหอธบายวากราฟแตกตางกนอยางไร และเปนเพราะเหตใด

ขอมลเพมเตม

1. ลองใชคำสงตางๆใน Command Window กอนทจะเขยนในสครปท

2. ใหอาน error message จากลางขนบน

3. การทำใหเครองหมายของตวเลขสลบกนสามารถใชสตรคอ (-1)(2n-1)

4. ให plot ทกๆจดโดยกานใชเวคเตอรในการเกบคาตางๆ

การสงงาน

ใหนกศกษาสงงานโดยการโหลดไฟลเขาไปในลงคทใหในหนาวชานตามทโชวขางลางโดยใหคำตอบทกอยางอยในไฟลเดยวและใหใช Format ของไฟลคอ 3_รหสนกศกษา_ชอภาษาองกฤษ.m ใหสงเปนสครปทไฟลเทานน

สำหรบคำตอบทจำเปนตองบรรยาย นกศกษาสามารถใช % หรอ comment ในการตอบแบบบรรยายเพมได

ใหสงภายในวนจนทรท 5 เวลาเทยงคน หลงจากเวลานแลวนกศกษาจะไมสามารถอพโหลดไฟลได

Outline

• การเขยนฟงกชน

การเขยน Matlab ฟงกชน

• แมทแลปฟงกชนผใชสามารถเขยนไดเองซงเรยกใชงานไดใน Command Window

• สำหรบฟงกชนในแมทแลป การสงผานคาสามารถทำโดยวธเดยวคอการ pass by value ไมสามารถ pass by reference ได หรอสรปอยางงายคอการสงผานคาในแมทแลปคอ input เปนตวเลขและได output เปนตวเลขเชนเดยวกน

•ฟงกชนในแมทแลปมนามสกลคอ .m

• การเขยนฟงกชนในแมทแลปคลายกบการเขยนสครปท แตกตางกนคอในบรรทดแรกตองขนตนดวย

• function [output1, output2, …] = name(input1, input2, …)

•ฟงกชนในแมทแลปตองมชอ name ชอเดยวกนกบไฟล เชน ฟงกชนชอ sind ไฟลนตองมชอวา sind.m

ตวอยางท 1 ฟงกชน sine โดยใช degree

• บรรทดท 1 บอกชอฟงกชน input คอ x และ output คอ s

• บรรทดท 2 คอคำอธบายซงเปน comment แมทแลปไมใชในการ execute สำหรบคำอธบายใตฟงกชนนแมทแลปจะใชเปนคำอธบายเวลาผใชใช help ในแมทแลป เชน help sind

• บรรทดท 3 คอบรรทดทใชในการคำนวณตางโดยจะเหนไดวาฟงกชนนใช input ทชอวา x ทเปนองศาแลวเปลยนองศาใหเปน radian หลงจากนนกเรยกฟงกชน sinธรรมดาเพอหาคา sin และสงตอเปน output ใหกบตวแปร s

การใชฟงกชน

• สามารถสรางฟงกชนไดจากการเปดจาก editor

• ลองพมพ >>help sind ใน command window เพอทจะเหนคำอธบายของฟงกชน

• สามารถใชฟงกชนไดใน command window ไดเลย เชน

>>sind(0)

>>sind(45)

>>t=sind(45)

>>m=sind([30 60 90])

>>sind

• คำสงขางบนแตละคำสงตามกนอยางไร

ตวอยางท 2 Unit step

ตวอยางท 2 Unit step

ตวอยางท 2 Unit step

• บรรทดท 1 บอกชอของฟงกชนโดยม input คอ t และ t0 และม output คอ y

• บรรทดท 2 – 5 เปนคำอธบายฟงกชน

• บรรทดท 6 เปนการใชฟงกชน size เพอเชคขนาดของตวแปร t

• บรรทดท 7 ถง 10 คอการเชควา t ตองเปนเวคเตอร

• บรรทดท 11 คอการสรางเวคเตอรเปลาๆขนมาหนงตวแลว initialise ใหเปน 0 ทงหมด ซงเวคเตอรนคอเวคเตอรทเปน output

• บรรทดท 12 ใช for ในการหาคาแตละคาในเวคเตอร input t

• บรรทดท 13 – 15 คอการเขยนเงอนไขตามสมการทกลาวไวขางตนสำหรบการหา unit step ฟงกชน

ตวอยางท 2 Unit step

• หลงจากเขยนฟงกชนเสรจแลวให save ไฟลใหชอวา ustep.m

• หลงจากนนใหลองวาดกราฟแสดงผลของ unit step

>>x = -1:0.1:4;

>>plot(x,1)

• ใหสรางกราฟ pulse จากคำสงขางลาง

>>v = ustep(x,0) – ustep(x,1)

>>plot(x,v)

>>axis([-1 4 -1 2])

Assignment

คาอนทเกรตของ unit step คอฟงกชน unit ramp ซงมนยามคอ

ดงทโชวในภาพ (a) ใหเขยนฟงกชน uramp ตามคำนยามขางตนและใหเขยนสครปทเพอใหไดภาพตามทโชวในภาพ (b) และใหสงคำตอบเวปทหนาเพจของวชาโดยใชชอไฟลวา week4_รหสนกศกษา_ชอนกศกษา

Outline

• การสรางเมทรกซและเวคเตอร

• โปรเจคกลม

การเขยนเมทรกซและเวคเตอร

• เวคเตอรคอเปนเมทรกซชนดหนงซงมขนาดหนงแถวหรอหนงคอลม • สำหรบเมทรกซเหมอนกบเมททรกซทางคณตศาสตรทมจำนวนแถวและจำนวนคอลมเชน

• การสรางเมททรกซ>>A = [5 7 9

-1 3 -2]

• หรอใช semicolon

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

>>C = [1:3; 8:-2:4]

การเขยนเมทรกซและเวคเตอร

• หรอสามารถสรางเวคเตอรแบบแถวแลวนำมาตอกน เชน>>D=[1 2 3];

>>D=[D; 4 5 6];

>>D=[D; 7 8 9];

การคณเมททรกซ

• สามารถคณเมททรกซไดเหมอนสมการคณตศาสตรทวไปโดยการใชเครองหมาย * โดย dimension ของเมททรกซตองสามารถคณกนได เชน

>>A*B

>>A*C จะเกด error

>>x = [1 0 3]

>>A*x จะเกด error

การ Transpose เมททรกซ

• ใหใชเครองหมาย ‘ ในการทำ transpose

>>A’

>>A*x’

ฟงชนทตางในการสรางเมททรกซ

• การสราง Identity เมททรกซ

>>I = eye(4)

• การสราง diagonal matrix

>>diag([-1 7 2])

>>diag(A)

การสรางเมททรกซ

• สามารถสรางเมททรกซจากเมททรกซอนไดแต dimension ตอง compatible กน

>>comp = [eye(3) B;

A zeros(2,2)]

• การใชเมททรกซเหมอนตาราง>>t = 0:0.2:1;

>>freq = [sin(t)’ sin(2*t)’ sin(3*t)’]

การเลอกใชขอมลในเมททรกซ

• เราสามารถเลอกใชขอมลในเมททรกซคลายกบเวคเตอรโดยใชวงเลบและใช index ในการบอกตำแหนงแถวและคอลม

>>J = [ 1 2 3 4

5 6 7 8

11 13 18 10];

>>J(1,1)

>>J(2,3)

>>J(1:2,4) %แถว 1-2 คอลม 4

>>J(3,:) %แถว 3 และเอาทกคอลม

>>J(3,2:3) = [-1 0]

ฟงกชนทเกยวของกบการใชเมททรกซ

• การเชคขนาดของเมททรกซ>>size(J)

>>[m,n] = size(J)

• การใช inverse

>>A = [3 0 4

0 1 -1

2 1 -3];

>>inv(A)

>>A*inv(A) %ควรจะได Identity matrix

การหามม Euler

ในการหมนจำเปนสามารถใช rotation matrix ไดสำหรบการหมนใน 2D rotation matrix คอ

การหมนโดยใชสามแกนคอ azimuth, elevation และ roll หรอ yaw pitch และ roll การหมนโดยจำเปนตองมลำดบตามสำคญ

Assignment

ใหเขยนฟงกชนซงนำ input เปนมม Euler มาสามมมและได rotation matrix เปนผลลพธ หลงจากนนให transform พกด (x,y,z) เปน (x’’,y’’,z’’)

ใหใชฟงกชนนในการหา rotation matrix R โดยมมมทตองการคอ (90o,20o,15o) ใหพสจนวาเมททรกซนเปน rotation matrix ทแทจรงและม determinant เปน +1

จากนนใหใช rotation matrix ในการ transform พกด p = (2,3,0)T เปน p’ ใหหาวา reverse ของเมททรกซนคออะไร

ใหหาเมททรกซ S ซงเปน Rotation matrix ทมม (-90o,-20o,-15o) และใหหาวาเมททรกซนทำการ transform จด p’ ไมทใด จงตอบวาเหตใด S จงไมใช inverse ของ R

การเขยนโปรแกรม

ใหระวงวาการใชฟงกชน tringonometry นใชมมเปน radian ไมใช degree

Outline

• การแกสมการพชคณตเชงเสน• การวาดกราฟ

การแกสมการพชคณตเชงเสน

• ในทางคณตศาสตรการใชเมททรกซ โดยหลกการคอการแกสมการทมหลายตวแปร หรอ simultaneous equations โดยเราสามารถเขยนสมการหลายตวแปรใหอยในรปเมททรกซได ตามตวอยางดานลาง โดย A คอ เมททรกซของสมประสทธ b คอเวคเตอรสำหรบคาคงท และ เวทเตอร x คอเวคเตอรตวแปรทเราตองการหาคำตอบ

คำตอบในกรณท A มอนเวอรส

• สำหรบสมการเชงเสนอยางงายทมจำนวนตวแปรเทากบจำนวนสมการ เมททรกซ A ทไดจะเปนเมททรกซสเหลยมจตรส เชน

>>A = [1 1

2 -3];

>>b = [3 5]’;

>>x = inv(A)*b

Gaussian elimination และ LU factorisation

• การใช inverse สำหรบแมทแลปนนไมคอยดเทาทควรเนองจากใชเวลาในการหา inverse คอนขางสงดงนนในการหา inverse ของเมททรกซนนการใช LU factorization หรอ Gaussian Elimination นนเอง

• สำหรบการหา LU factorization นนแมทแลปท operator คอ backslash \ และ forward slash / ตามตารางขางลาง

Singular matrices และ rank

• สำหรบระบบสมการทม det(A) = 0 หรอเปน singular matrix จะไมสามารถหา inverse ไดและสมการจะไมม unique solution เชน

>>A = [1 1 1

2 0 3

3 1 4];

>>b = [2 5 6]’;

>>x = A\b

Singular matrices และ rank

• สมการตามตวอยางกอนหนาน ทงสามสมการไมเปนอสระจากกน เพราะสมการทสามเกดจากสองสมการกอนหนาน ถาหา rank ของเมททรกซ A เราจะไดแค 2 ซงเทากบจำนวนสมการทเปนอสระจากกน

>>rank(A)

• ดงนกอนหาคำตอบจำเปนตองเชคดวาสมการแตละสมการเปนอสระจากกนหรอไม

Ill-conditioning

• สมการบางชนดอาจเกอบเปน singular ซงถามการเปลยนขอมลเลกนอย อาจจะทำใหคำตอบตางจากเดมเยอะมาก เชน

>>M = [1 1; 1 1.01]; b = [2 2.01]’;

>>x = M\b

• ใหลองเปลยนตวเลขในเมททรกซ A เลกนอยเพอดการเปลยนแปลงของคำตอบ

>>M(1,2) = 1.005;

>>M\b

• จะเหนวาเมททรกซ M มความไวตอการเปลยนตวเลขมากซงความไวของเมททรกซสามารถหาไดจาก cond(M) ยงคา condition ยงมากเมททรกซยงมความไว

Over-determined systems: Least squares

• สำหรบระบบทมจำนวนสมการมากกวาตวแปรซงเปนปญหาทเจอไดทวไป เชน การหาสมการเสนตรงจากขอมลทวดได ในการแกสมการจำเปนจะเปน over-determined systems ดงนนจะไมสามารถหาคำตอบทแทจรงได แตคำตอบทไดจะเปน best fit ซงเปนสมประสทธทพยายาม minimize คา Root mean squares error

Over-determined systems: Least squares

• สำหรบสมการทอยในรป Ax = b คำตอบของสมการจะเปนคำตอบทเกดจาก least squares และเปน pseudoinverse ตามสมการดานลาง

• สำหรบคำตอบในแมทแลปการใช \ จะเปนการใช Gaussian Elimination ในการหาคำตอบ สวนถาเปนระบบสมการ Over-determined system แมทแลปจะใหคำตอบทมาจาก least squares หรอสามารถใชฟงกชน pinv แทนการใช \

Over-determined systems: Least squares – ตวอยาง

กราฟ

• แมทแลปสามารถใชพลอตกราฟไดทง 2D และ 3D

• การใสมากกวา 1 กราฟในหนง figure ใหใช subplot เชน

การเขยนกราฟ 3D

• ใหใชคำสง plot3 ในการ plot สามมตซงตองเปน plot3(x,y,z) โดย x y และ z ตองเปนเวคเตอร

การวาดกราฟทเปน surface

• สามารถวาดกราฟทเปน surface ไดตามตวอยางสมการ