ปฏิบัติการคอมพิวเตอร์ เรื่อง ระบบสมการหลายตัวแปร ปฏิบัติการคอมพิวเตอร์ เรื่อง ระบบสมการหลายตัวแปร อ.ดร.ชโลธร ธรรมแท้ สาขาวิชาวิศวกรรมเครื่องกล มหาวิทยาลัยเทคโนโลยีสุรนารี
Linear Systems: GAUSS Elimination ปัญหา n สมการ - n ตัวแปร หรือเขียนในรูป [A]{x}={b}
GAUSS Elimination กำจัดไปข้างหน้า แปลง Matrix ให้เป็น Matrix สามเหลี่ยมบน จะเหลือสมการสุดท้ายเป็น 1 สมการ 1 ตัวแปร จะได้คำตอบของตัวแปรสุดท้าย จากนั้นแทนค่ากลับขึ้นมาทีละสมการ
Forward Elimination แถวล่าง = แถวล่าง - (สปส ล่าง / สปส บน )แถวบน
Back Substitution แทนค่า กลับ จาก Forward Elimination ได้ Matrix สามเหลี่ยมบน แทนค่า กลับ หรือ
Download ได้ จาก http://eng.sut.ac.th/me/subject.html MATLAB: GaussElim.m % ขั้นตอน Forward Elimination % factor = A(i,j)/A(j,j); % factor = สปส ล่าง / สปส บน A(i,j:n) = A(i,j:n) - factor*A(j,j:n); %แถวล่าง-factor*แถวบน b(i)= b(i) - factor*b(j); %แถวล่าง-factor*แถวบน % ขั้นตอน Back Substitution% for k = n-1:-1:1 % loop Back sub x(k) = (b(k) - A(k,k+1:n)*x(k+1:n))/A(k,k) end Download ได้ จาก http://eng.sut.ac.th/me/subject.html
ปัญหาของวิธี GAUSS Elimination เนื่องจาก a11 เป็น 0 ทำให้ขั้นตอนการกำจัด row2 เกิดการหารด้วย 0 แก้ปัญหาโดยสลับ Row3 กับ Row1 แล้วจึงเริ่มคำนวณ ระหว่างการคำนวณอาจเกิด สปส ของ column ซ้ายเป็นศูนย์ ให้ข้ามการทำงานในแถวนั้นไป ใน MATLAB คือบรรทัด: if A(i,j)~=0 เรียกว่าการทำ Pivoting
ปัญหาของวิธี GAUSS Elimination The exact solution is ทำ Forward Elimination หากปัดเศษ x2 จะได้คำตอบ x1 ต่างกันอย่างมาก ดังนี้
สมการชุดเดียวกัน หากสลับแถว ทำ Forward Elimination หากปัดเศษ x2 จะได้คำตอบ x1 ต่างกันเล็กน้อย : Partial Pivoting
แบบฝึกหัด จงหาคำตอบของระบบสมการ 1. 2.
Linear Systems: LU factorization เมื่อ [A] เป็นค่าที่ทราบ แก้สมการทั้ง 9 ทีละสมการ จะได้ [L] และ [U]
LU factorization ให้ [U]{x}={y} ทำให้[L]{y}={b} หาคำตอบของ {y} ได้ง่ายจาก matrix สามเหลี่ยมล่าง แก้ [L]{y}={b} ให้ [U]{x}={y} หาคำตอบของ {x} ได้ง่ายจาก matrix สามเหลี่ยมบน
MATLAB function: lu() [L,U]=lu(A) สมการ
คำถาม: A\b ไห้ผลลัพธ์เป็น อะไร MATLAB function: \ คำสั่ง \ ใน MATLAB ใช้ในการหาคำตอบของสมการ [A]{x}={b} ต้องการหาคำตอบ [L]{y}={b} พิมพ์ >> y=L\b ต้องการหาคำตอบ [U]{x}={y} พิมพ์ >> x=U\y คำถาม: A\b ไห้ผลลัพธ์เป็น อะไร
MATLAB function: inv() inv() ใช้ในการหา inverse matrix เช่น inv(A) ดังนั้นหาคำตอบของสมการ [A]{x}={b} ได้จากคำสั่ง >> x=inv(A)*b จากคุณสมบัติ คูณเข้าทางซ้าย ทำให้ได้ {x}
Linear Systems: : Jacobi Iteration จัดรูป สมการ เดาค่าเริ่มต้น x1,x2,x3 เช่น = 0 แล้วแทนค่ากลับลงไปในสมการที่จัดรูปแล้ว Iteration 1:
Linear Systems: : Jacobi Iteration แทนค่า x1,x2,x3 จาก iteration 1 ในสมการที่จัดรูปแล้ว Iteration 2: ทำซ้ำ แทนค่า x1,x2,x3 จาก iteration 2 และทำไปเรื่อยๆ Iteration 3 : X1=2.904500, X2=-2.674905, X3=7.111217 Iteration 4 : X1=2.907117, X2=-2.674157, X3=7.110955
Download ได้ จาก http://eng.sut.ac.th/me/subject.html Jacobi.m X1old=0; X2old=0; X3old=0; % กำหนดค่าเริ่มต้น for i=1:10 X1new = (7.85 + 0.1*X2old + 0.2*X3old) /3 ; %สมการ 1 X2new = (-19.3 - 0.1*X1old + 0.3*X3old) /7; %สมการ 2 X3new = (71.4 - 0.3*X1old + 0.2*X2old) /10; %สมการ 3 X1old=X1new; X2old=X1new; X3old=X1new; %เก็บค่าเก่า fprintf ('iter=%d X1=%f X2=%f X3=%f \n', i,X1new,X2new,X3new); end Download ได้ จาก http://eng.sut.ac.th/me/subject.html
แบบฝึกหัด จงหาผลเฉลยของสมการ โดยใช้วิธี Jacobi Iteration เปรียบเทียบผลที่ได้กับวิธีอื่นๆ
Nonlinear Systems สมการไม่เชิงเส้นดังในบท root of equations สามารถมีหลายสมการ หลายตัวแปร คำตอบของสมการคือจุดตัดกันของเส้นกราฟทั้ง 2
Nonlinear Systems: Jacobi Iteration สามารถประยุกต์ใช้ Jacobi Iteration ในการหาคำตอบของ Nonlinear systems Case1 Case2
แบบฝึกหัด จงหาผลเฉลยของสมการ โดยใช้วิธี Jacobi Iteration เปรียบเทียบระหว่างการจัดรูปสมการ Case1 กับ Case2 ให้ผลลัพธ์ต่างกันอย่างไร กำหนดค่าเริ่มต้น X1=2, X2=3 ทำซ้ำ 5 ครั้ง