การใช้ MATLAB ย้ายข้างสมการ
สมมติว่าเราต้องการย้ายข้างสมการที่ซับซ้อนมากๆ เช่น
ให้อยู่ในรูป Y = [การคำนวณตัวแปร X] โดยกำหนดให้ B1, B2, D, V1, V2 เป็นค่าคงที่
จากสมการตั้งต้น การย้ายข้างด้วยมือทำได้ยากมาก หรืออาจจะทำไม่ได้
เราจึงต้องใช้ MATLAB ช่วยคำนวณ ตามขั้นตอนดังนี้
#ประกาศตัวแปรแบบ symbolic
>> syms Y X B1 B2 V1 V2 D;
#เขียนสมการตั้งต้น
>> eqn = ((X*D)/Y) - X == (((((2/B1)^(1/2))*((Y/X)^(1/2)))+V1)*(X/Y)) + (B2*((D/2)-(Y/2)-V2+(V1/2)+(((1/2)*((2/B1)^(1/2))*((Y/X)^(1/2))))))^(-1);
#ใช้คำสั่ง solve โดยเริ่มต้นใช้ MaxDegree เป็น 1
>> solY = solve(eqn, Y, 'MaxDegree', 1);
#ตรวจสอบผลลัพธ์
>> pretty(solY)
ให้สังเกตุสมการผลลัพธ์ว่ามี warning และมีตัวแปร Z เพิ่มเข้ามาหรือไม่
ถ้ามีให้เพิ่ม MaxDegree ขึ้นทีละ 1 จนกว่าตัวแปร Z จะหายไป
#ในกรณีนี้ใช้ MaxDegree เท่ากับ 4
>> solY = solve(eqn, Y, 'MaxDegree', 4);
#ตรวจสอบผลลัพธ์อีกครั้ง
>> pretty(solY)
จะเห็นว่ามีสมการคำตอบอยู่ 4 สมการ และมีสมการย่อยเยอะมาก (แสดงไม่หมด)
เราต้องทดสอบว่าสมการใดคือคำตอบที่แท้จริงด้วยการแทนค่าตัวแปรแล้ว
สังเกตผลลัพธ์ว่าตรงกับสมการต้นฉบับหรือไม่
#กำหนดค่าคงที่
>> B1 = 131.15e-6;
>> B2 = 464.64e-6;
>> D = 1.2;
>> V1 = 0.3111;
>> V2 = 0.37432;
#กำหนดค่าแกน X (1,000 ถึง 1,000,000 เพิ่มทีละ 1,000)
>> X = 1e3:1e3:1e6;
#คำนวณ Y ที่ทุกๆ ค่า X (ในที่นี้เลือกสมการคำตอบที่ 1)
>> Y = double(subs(solY(1)));
#จัด X กับ Y ให้เป็นอาร์เรย์เดียวกัน
>> A = [X.', Y.'];
#เขียนอาร์เรย์ A ลงในไฟล์ MS-Excel เพื่อนำไปพล็อตกราฟ
>> xlswrite('Y.xlsx',A);
เมื่อพล็ตกราฟใน MS-Excel
จะเห็นว่าผลลัพธ์จากการแก้สมการของ MATLAB (model)
ใกล้เคียงกับสมการต้นฉบับ (Simulation)
ให้อยู่ในรูป Y = [การคำนวณตัวแปร X] โดยกำหนดให้ B1, B2, D, V1, V2 เป็นค่าคงที่
จากสมการตั้งต้น การย้ายข้างด้วยมือทำได้ยากมาก หรืออาจจะทำไม่ได้
เราจึงต้องใช้ MATLAB ช่วยคำนวณ ตามขั้นตอนดังนี้
#ประกาศตัวแปรแบบ symbolic
>> syms Y X B1 B2 V1 V2 D;
#เขียนสมการตั้งต้น
>> eqn = ((X*D)/Y) - X == (((((2/B1)^(1/2))*((Y/X)^(1/2)))+V1)*(X/Y)) + (B2*((D/2)-(Y/2)-V2+(V1/2)+(((1/2)*((2/B1)^(1/2))*((Y/X)^(1/2))))))^(-1);
#ใช้คำสั่ง solve โดยเริ่มต้นใช้ MaxDegree เป็น 1
>> solY = solve(eqn, Y, 'MaxDegree', 1);
#ตรวจสอบผลลัพธ์
>> pretty(solY)
ให้สังเกตุสมการผลลัพธ์ว่ามี warning และมีตัวแปร Z เพิ่มเข้ามาหรือไม่
ถ้ามีให้เพิ่ม MaxDegree ขึ้นทีละ 1 จนกว่าตัวแปร Z จะหายไป
#ในกรณีนี้ใช้ MaxDegree เท่ากับ 4
>> solY = solve(eqn, Y, 'MaxDegree', 4);
#ตรวจสอบผลลัพธ์อีกครั้ง
>> pretty(solY)
จะเห็นว่ามีสมการคำตอบอยู่ 4 สมการ และมีสมการย่อยเยอะมาก (แสดงไม่หมด)
เราต้องทดสอบว่าสมการใดคือคำตอบที่แท้จริงด้วยการแทนค่าตัวแปรแล้ว
สังเกตผลลัพธ์ว่าตรงกับสมการต้นฉบับหรือไม่
#กำหนดค่าคงที่
>> B1 = 131.15e-6;
>> B2 = 464.64e-6;
>> D = 1.2;
>> V1 = 0.3111;
>> V2 = 0.37432;
#กำหนดค่าแกน X (1,000 ถึง 1,000,000 เพิ่มทีละ 1,000)
>> X = 1e3:1e3:1e6;
#คำนวณ Y ที่ทุกๆ ค่า X (ในที่นี้เลือกสมการคำตอบที่ 1)
>> Y = double(subs(solY(1)));
#จัด X กับ Y ให้เป็นอาร์เรย์เดียวกัน
>> A = [X.', Y.'];
#เขียนอาร์เรย์ A ลงในไฟล์ MS-Excel เพื่อนำไปพล็อตกราฟ
>> xlswrite('Y.xlsx',A);
เมื่อพล็ตกราฟใน MS-Excel
จะเห็นว่าผลลัพธ์จากการแก้สมการของ MATLAB (model)
ใกล้เคียงกับสมการต้นฉบับ (Simulation)
talisnim-be John Chongbang Crack
ReplyDeletealadtobkonf