การใช้ 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)

Comments

Post a Comment

Popular posts from this blog

การสร้างหน้า google maps ใน ionic slide menu

การตั้งค่า Raspberry Pi 3 เพื่อเชื่อมต่อ RS485