ทั้งสองเป็นตัวแก้ปัญหาโดยตรงเพื่อแก้ปัญหาระบบเชิงเส้น (ตรงข้ามกับตัวแก้ซ้ำ ๆ )
mldivide
ไม่ดำเนินการทดสอบสำหรับในการแก้b โปรดดูคำตอบของ Allan ในกระทู้นี้สำหรับข้อมูลเพิ่มเติม ดูความช่วยเหลือของอัลกอริทึมของ MATLAB ได้ที่นี่AA x = bmldivide
mldivide
สำหรับเมทริกซ์จตุรัส: ถ้า A เป็นสมมาตรและมีองค์ประกอบขวางจริงบวก MATLAB จะพยายามแยกตัวประกอบ Cholesky หากการแยกตัวประกอบแบบ Cholesky ล้มเหลว MATLAB จะทำการแยกตัวประกอบแบบสมมาตรไม่ จำกัด ถ้า A คือ Hessenberg ด้านบน MATLAB ใช้การกำจัดแบบเกาส์เซียนเพื่อลดระบบให้เป็นเมทริกซ์รูปสามเหลี่ยม ถ้า A เป็นสี่เหลี่ยมจัตุรัส แต่ไม่ใช่สามเหลี่ยมมุมฉาก, สมมาตรและบวกแน่นอนหรือ Hessenberg จากนั้น MATLAB จะทำการแยกตัวเป็นรูปสามเหลี่ยมทั่วไปโดยใช้การแยกตัวประกอบ LU ด้วยการหมุนเป็นบางส่วน
linsolve
สำหรับเมทริกซ์จตุรัส: การแยกตัวประกอบ LU ด้วยการหมุนบางส่วน
mldivide
และlinsolve
สำหรับเมทริกซ์รูปสี่เหลี่ยมผืนผ้า: การแยกตัวประกอบของ QR
ในlinsolve
เอกสารช่วยแนะนำในเว็บไซต์ mathworks คุณสามารถหลีกเลี่ยงกระบวนการทดสอบพิเศษ (อัลลันใช้คำว่า "ค่าใช้จ่าย" ในคำตอบของเขา) โดยใช้opts
ถ้าหากคุณรู้ว่าเป็นอย่างไรล่วงหน้า สำหรับปัญหาใหญ่คุณสามารถประหยัดเวลาได้ ตัวอย่างเช่น:A
opts.POSDEF = true; linsolve(A,b,opts)
จะคืนค่าถ้าคุณรู้ว่าเป็นค่าบวกที่แน่นอนล่วงหน้า อย่างไรก็ตามการเลือกที่ไม่ถูกต้องนำไปสู่ผลลัพธ์ที่ไม่ถูกต้องxAopts
หากตรงตามเกณฑ์ที่กำหนดlinsolve
และmldivide
ใช้กระบวนการแยกตัวประกอบแบบเดียวกัน ตัวอย่างเช่นสำหรับระบบบวกแน่นอนที่มีความหนาแน่นสูงซึ่งเป็นที่พอใจของคุณสมบัติบางอย่างหรือคุณมีระบบที่ overdetermined และทั้งคู่ดำเนินการปรับกำลังสองน้อยที่สุด
นอกจากนี้linsolve
ยังสามารถดำเนินการคำนวณสัญลักษณ์ สิ่งนี้มีประโยชน์เมื่อคุณมีระบบบ่อนทำลายขนาดเล็กที่มีวิธีแก้ปัญหาจำนวนไม่ จำกัด linsolve
ช่วยให้คุณสามารถแก้มันเป็นสัญลักษณ์mldivide
ไม่สามารถทำได้ อย่างไรก็ตามหากตัวแปรไม่ได้ถูกประกาศอย่างเป็นสัญลักษณ์mldivide
และlinsolve
จะให้ข้อความเตือนเหมือนกัน "เมทริกซ์นั้นเป็นเอกสิทธิ์ของความแม่นยำในการทำงาน"
สุดท้าย แต่ไม่ท้ายสุดlinsolve
ไม่รองรับระบบแบบเบาบางเช่นเมทริกซ์ต่อไปนี้ (จุดสีฟ้าหมายถึงรายการที่ไม่ใช่ศูนย์) ในขณะที่mldivide
สามารถจัดการกับระบบเบาบางได้อย่างมีประสิทธิภาพเมื่อขนาดต่ำกว่า 200k โดย 200k