วิทยาศาสตร์การคำนวณ

ถามตอบสำหรับนักวิทยาศาสตร์ที่ใช้คอมพิวเตอร์เพื่อแก้ปัญหาทางวิทยาศาสตร์

2
ค่า Null-space ของเมทริกซ์หนาแน่นแบบสี่เหลี่ยมผืนผ้า
ได้รับเมทริกซ์หนาแน่น∈ R เมตร× n , ม> > n ; ม. x ( เมตร) ≈ 100000สิ่งที่เป็นวิธีที่ดีที่สุดที่จะหาพื้นฐาน null พื้นที่ภายในบางอดทนε ?A∈Rm×n,m>>n;max(m)≈100000A∈Rm×n,m>>n;max(m)≈100000A \in R^{m \times n}, m >> n; max(m) \approx 100000 ϵϵ\epsilon จากพื้นฐานนั้นฉันสามารถพูดได้หรือไม่ว่า cols บางอันนั้นขึ้นอยู่กับเส้นตรงภายในϵϵ\epsilon ? กล่าวอีกนัยหนึ่งว่ามีการคำนวณพื้นฐานของช่องว่าง null คอลัมน์ใดของAAAต้องถูกลบออกเพื่อให้ได้เมทริกซ์ที่ไม่อยู่ในตำแหน่ง? การอ้างอิงได้รับการชื่นชม

3
การค้นหาจุดสามเหลี่ยมที่อยู่ใน
สมมติว่าผมมี 2D ตาข่ายประกอบด้วยสามเหลี่ยม nonoverlapping {Tk}Nk=1{Tk}k=1N\{T_k\}_{k=1}^Nและชุดของจุด{pi}Mi=1⊂∪Nk=1TK{pi}i=1M⊂∪k=1NTK\{p_i\}_{i=1}^M \subset \cup_{k=1}^N T_K K วิธีที่ดีที่สุดในการกำหนดสามเหลี่ยมแต่ละจุดนั้นคืออะไร ตัวอย่างเช่นในภาพต่อไปนี้เรามี , ,ดังนั้นฉันต้องการฟังก์ชันที่ส่งคืนรายการ .p1∈T2p1∈T2p_1 \in T_2p2∈T4p2∈T4p_2 \in T_4p3∈T2p3∈T2p_3 \in T_2ffff(p1,p2,p3)=[2,4,2]f(p1,p2,p3)=[2,4,2]f(p_1,p_2,p_3)=[2,4,2] Matlab มีฟังก์ชั่นชี้ตำแหน่งซึ่งทำสิ่งที่ฉันต้องการสำหรับ Delaunay meshes แต่มันล้มเหลวสำหรับ mesh ทั่วไป ความคิดแรก (โง่) ของฉันคือสำหรับโหนดวนรอบสามเหลี่ยมทั้งหมดเพื่อหาสามเหลี่ยมp i ที่อยู่ในอย่างไรก็ตามนี่ไม่มีประสิทธิภาพมาก - คุณอาจต้องวนซ้ำทุกสามเหลี่ยมทุกจุดดังนั้นจึง สามารถทำงานO ( N ⋅ M )ได้pipip_ipipip_iO(N⋅M)O(N⋅M)O(N \cdot M) ความคิดต่อไปของฉันคือสำหรับทุกจุดค้นหาโหนดโหนดที่ใกล้ที่สุดผ่านการค้นหาเพื่อนบ้านที่ใกล้ที่สุดจากนั้นมองผ่านรูปสามเหลี่ยมที่แนบกับโหนดที่ใกล้ที่สุด ในกรณีนี้งานจะเป็นO ( a ⋅ M ⋅ l …

5
ใช้ PCA กับเมทริกซ์เบาบางขนาดใหญ่มาก
ฉันกำลังทำงานจัดหมวดหมู่ข้อความด้วย R และฉันได้รับเมทริกซ์คำศัพท์เอกสารที่มีขนาด 22490 คูณ 120,000 (เฉพาะรายการที่ไม่เป็นศูนย์ 4 ล้านรายการน้อยกว่า 1%) ตอนนี้ฉันต้องการลดขนาดโดยใช้ PCA (การวิเคราะห์องค์ประกอบหลัก) น่าเสียดายที่ R ไม่สามารถจัดการเมทริกซ์ขนาดใหญ่นี้ได้ดังนั้นฉันจึงจัดเก็บเมทริกซ์แบบกระจัดกระจายในไฟล์ใน "รูปแบบตลาดเมทริกซ์" หวังว่าจะใช้เทคนิคอื่นเพื่อทำ PCA ใครก็ตามสามารถให้คำแนะนำแก่ฉันเกี่ยวกับห้องสมุดที่มีประโยชน์ (ไม่ว่าจะเป็นภาษาการเขียนโปรแกรม) ซึ่งสามารถทำ PCA กับเมทริกซ์ขนาดใหญ่นี้ได้อย่างง่ายดายหรือทำ PCA แบบยาวด้วยตัวเองในคำอื่น ๆคำนวณเมทริกซ์ความแปรปรวนร่วม แล้วคำนวณเวกเตอร์ลักษณะเฉพาะสำหรับเมทริกซ์ความแปรปรวนร่วม สิ่งที่ผมต้องการคือการคำนวณเครื่องคอมพิวเตอร์ทั้งหมด (120,000) และเลือกเฉพาะด้านบน N พีซีที่บัญชีสำหรับ 90% แปรปรวน เห็นได้ชัดว่าในกรณีนี้ฉันต้องให้ค่าเกณฑ์เบื้องต้นเพื่อตั้งค่าความแปรปรวนเล็ก ๆ ให้เป็น 0 (ในเมทริกซ์ความแปรปรวนร่วม) มิฉะนั้นเมทริกซ์ความแปรปรวนร่วมจะไม่กระจัดกระจายและขนาดจะเท่ากับ 120,000 โดย 120,000 ซึ่งเป็น เป็นไปไม่ได้ที่จะจัดการด้วยเครื่องเดียว นอกจากนี้การโหลด (eigenvectors) จะมีขนาดใหญ่มากและควรเก็บไว้ในรูปแบบเบาบาง ขอบคุณมากสำหรับความช่วยเหลือใด …

4
ทำไมเจ้าของบ้านไม่สามารถสะท้อนเมทริกซ์ในแนวทแยงได้?
เมื่อคำนวณ QR factorization ในทางปฏิบัติเราใช้การสะท้อนของเจ้าของบ้านในการลดส่วนของเมทริกซ์ ฉันรู้ว่าสำหรับการคำนวณค่าลักษณะเฉพาะของเมทริกซ์สมมาตรสิ่งที่ดีที่สุดที่คุณสามารถทำได้กับการสะท้อนของเจ้าของบ้านคือการทำให้มันอยู่ในรูปแบบสามมิติ มีวิธีที่ชัดเจนที่จะดูว่าทำไมมันจึงไม่สามารถทแยงมุมแบบนี้ได้อย่างสมบูรณ์? ฉันพยายามอธิบายสิ่งนี้อย่างง่าย ๆ แต่ฉันไม่สามารถนำเสนอได้อย่างชัดเจน

2
อะไรคือแนวปฏิบัติที่ดีที่สุดสำหรับอัลกอริทึมและการประยุกต์ใช้การจำลองหลายฟิสิกส์
การจำลองแบบมัลติ - ฟิสิกส์เกี่ยวข้องกับการมีเพศสัมพันธ์หลาย "ฟิสิกส์" มักจะมีพื้นที่และ / หรือเวลาที่แตกต่างกัน นอกจากนี้รหัสฟิสิกส์เดียวมักจะถูกเขียนโดยทีมที่แตกต่างกัน เทคนิคการแต่งงานกันที่ใช้กันมากที่สุดคือการแยกตัวดำเนินการอันดับหนึ่ง แต่สิ่งนี้มีความแม่นยำและคุณสมบัติความเสถียรต่ำ ฉันจะกำหนดอัลกอริธึมที่จะมีประสิทธิภาพสำหรับปัญหาที่น่าสนใจได้อย่างไรและฉันจะจัดโครงสร้างซอฟต์แวร์ของฉันเพื่อให้อัลกอริทึมเหล่านี้ใช้งานได้อย่างไร

3
ฉันควรศึกษาการสร้างและการเขียนโปรแกรมระบบ HPC อย่างไร
ฉันอยู่ในสาขาที่ไม่จำเป็นต้องทำงาน HPC เป็นอย่างมากและเมื่อมันพบมันมักจะเป็นผลมาจากนักวิจัยจากสาขาอื่นที่สำรวจแอพพลิเคชั่นใหม่ ๆ กับวิธีการของพวกเขาและสิ่งที่คล้ายกัน ในขั้นต้นสิ่งนี้หมายความว่ามันไม่เคยได้รับการแนะนำในหลักสูตรการศึกษาหรือได้รับการฝึกอบรมการสัมมนาและสิ่งที่คล้ายกัน - มันเป็นไปได้ที่จะไปประกอบอาชีพทั้งหมดโดยไม่จำเป็นต้องใช้มัน อย่างไรก็ตามในเวลาเดียวกันฉันก็สามารถทำงานได้มากรับประโยชน์จากการใช้ทรัพยากร HPC ให้ฉันดีขึ้น - ส่วนใหญ่อยู่ในรูปแบบของการจำลอง Monte Carlo แบบขนานอย่างดี ปัญหาของฉันคือการค้นหาแหล่งข้อมูลเพื่อการเรียนรู้วิธีการใช้กลุ่ม MPI ฯลฯ และแยกความดีออกจากความเลวเพราะฉันไม่รู้มาก มีข้อเสนอแนะใด ๆ สำหรับหนังสือเกี่ยวกับการเขียนโปรแกรมในระบบประเภทนี้หรือในการตั้งค่าและใช้งานการตั้งค่า HPC ที่เรียบง่ายของตัวเอง?
16 hpc  education 

4
การทำโปรไฟล์รหัส CFD ด้วย Callgrind
ฉันใช้ Valgrind + Callgrind เพื่อทำหน้าที่แก้ปัญหาที่ฉันเขียน ในฐานะที่เป็นคู่มือผู้ใช้ Valgrind ฉันได้รวบรวมรหัสของฉันพร้อมตัวเลือกการดีบักสำหรับคอมไพเลอร์: "หากไม่มีข้อมูลการดีบักเครื่องมือ Valgrind ที่ดีที่สุดจะสามารถทำได้คือเดาว่าฟังก์ชันใดที่เป็นส่วนหนึ่งของรหัสซึ่งทำให้ทั้งข้อความแสดงข้อผิดพลาดและผลลัพธ์การทำโปรไฟล์เกือบไร้ประโยชน์ด้วย -g คุณจะได้รับข้อความที่ชี้ไปยัง บรรทัดซอร์สโค้ดที่เกี่ยวข้อง " คู่มือ Valgrind เมื่อคอมไพล์ด้วยตัวเลือกการดีบักรหัสจะทำงานช้าลงมาก รหัส CFD ช้ามาก ๆ แม้ในกรณีเล็ก ๆ เมื่อคอมไพล์ด้วยแฟล็กการดีบัก Valgrind ทำให้ช้าลง 40x (ดูคู่มือ1 ) คุณใช้เครื่องมือใดในการทำโปรไฟล์โค้ด (การทำโปรไฟล์ไม่ใช่การทำเกณฑ์เปรียบเทียบ)? คุณให้โค้ดทำงานนานแค่ไหน (สถิติ: กี่ขั้นตอน) เคสมีขนาดใหญ่เท่าใด (ถ้าเคสพอดีกับแคชตัวแก้คำสั่งจะมีขนาดเร็วขึ้น แต่แล้วฉันจะพลาดกระบวนการที่เกี่ยวข้องกับหน่วยความจำ)
16 hpc 

2
ฉันจะเลือกตัวแก้ Riemann ที่ดีได้อย่างไรเมื่อแก้ปัญหาระบบไฮเพอร์โบลิก PDE เป็นตัวเลขได้อย่างไร
วิธีการเชิงตัวเลขจำนวนมากสำหรับ PDE แบบไฮเปอร์โบลิกนั้นขึ้นอยู่กับการใช้ตัวแก้ Riemann เครื่องมือแก้ปัญหาดังกล่าวมีความจำเป็นสำหรับการจับคลื่นกระแทกอย่างแม่นยำ มีตัวแก้ปัญหาดังกล่าวมากมายสำหรับระบบที่ได้รับการศึกษามากที่สุด (เช่นตัวแก้ปัญหาที่แน่นอนตัวแก้รอย Roe ตัวแก้ HLL) ฉันจะตัดสินใจได้อย่างไรว่าจะใช้

1
เมื่อใดควรใช้วิธีการโดยนัยในการบูรณาการของไฮเพอร์โบลิก PDE
วิธีการเชิงตัวเลขสำหรับการแก้ PDE (หรือ ODEs) แบ่งออกเป็นสองประเภทกว้าง ๆ : วิธีการที่ชัดเจนและโดยนัย วิธีการโดยนัยช่วยให้การประทับเวลามีเสถียรภาพมากขึ้น แต่ต้องการงานมากขึ้นต่อขั้นตอน สำหรับไฮเพอร์โบลิก PDEs ภูมิปัญญาทั่วไปคือวิธีการโดยนัยมักจะไม่จ่ายเพราะการใช้การประทับเวลาที่มีขนาดใหญ่กว่าที่ได้รับอนุญาตจากเงื่อนไข CFL นำไปสู่ผลลัพธ์ที่ไม่ถูกต้องมาก อย่างไรก็ตามมีการใช้วิธีการโดยนัยในบางกรณี สำหรับแอปพลิเคชันที่ระบุควรเลือกใช้วิธีการที่ชัดเจนหรือโดยนัยอย่างไร

5
มีวิธีการแยกตัวดำเนินการสำหรับ PDE หลายตัวที่ทำให้เกิดการรวมลำดับสูงหรือไม่?
ได้รับวิวัฒนาการของ PDE ut=Au+Buut=Au+Buu_t = Au + Bu เมื่อเป็นตัวดำเนินการส่วนต่าง (อาจเป็นแบบไม่เชิงเส้น) ที่ไม่ต้องเดินทางวิธีการเชิงตัวเลขทั่วไปคือการสลับระหว่างการแก้A,BA,BA,B ut=Auut=Auu_t = Au และ ut=Bu.ut=Bu.u_t = Bu. การดำเนินการที่ง่ายที่สุดของเรื่องนี้เป็นที่รู้จักกันในชื่อ Godunov และมีความแม่นยำอันดับหนึ่ง วิธีที่รู้จักกันดีอีกวิธีหนึ่งคือ Strang splitting นั้นมีความแม่นยำอันดับสอง มีวิธีแยกตัวดำเนินการลำดับที่สูงขึ้น (หรือวิธีการแยกย่อยหลายวิธีแบบอื่น) อยู่หรือไม่?

3
การใช้แผนที่พาวเวอร์ซีรีส์
ฉันมาจากสาขาวิชาฟิสิกส์เร่งความเร็วที่เกี่ยวข้องกับวงแหวนจัดเก็บแบบวงกลมโดยเฉพาะสำหรับแหล่งกำเนิดแสงซินโครตรอน อิเล็กตรอนพลังงานสูงหมุนเวียนรอบวงแหวนซึ่งถูกนำทางด้วยสนามแม่เหล็ก อิเล็กตรอนไหลเวียนหลายพันล้านครั้งและต้องการทำนายเสถียรภาพ คุณสามารถอธิบายการเคลื่อนที่ของอิเล็กตรอนที่จุดหนึ่งในวงแหวนในแง่ของพื้นที่เฟส (ตำแหน่ง, พื้นที่โมเมนตัม) การหมุนแต่ละรอบวงแหวนอนุภาคจะกลับสู่ตำแหน่งและโมเมนตัมใหม่ซึ่งจะกำหนดแผนที่ในพื้นที่เฟสที่เรียกว่า "one-turn map" เราอาจสมมติว่ามีจุดคงที่ที่จุดกำเนิดและเพื่อให้สามารถขยายในชุดพลังงาน ดังนั้นเราต้องการทราบเกี่ยวกับความเสถียรของแผนที่อนุกรมกำลังซ้ำ มีคำถามที่ยากมากเกี่ยวกับเรื่องนี้และหัวข้อนี้มีประวัติเก่าแก่ มีการนำไลบรารี่จำนวนมากมาใช้เพื่อนำไปใช้เรียกว่า Truncated Power Series Algebra (ดูเช่นบทความนี้เกี่ยวกับ zlib โดย Y. Yan พื้นหลังเพิ่มเติมเกี่ยวกับฟิสิกส์และอีกวิธีหนึ่งในการวิเคราะห์เป็นวิธีแบบปกติเช่น Bazzani และ อัล ที่นี่ ) คำถามคือวิธีการใช้ไลบรารีดังกล่าวและวิธีแก้ปัญหาเสถียรภาพ วิธีการหลักที่ใช้ในการเคลื่อนที่ของลำแสงเป็นการวิเคราะห์แบบปกติซึ่งฉันไม่เชื่อว่าประสบความสำเร็จ ฉันสงสัยว่าวิธีการทางสเปกตรัมบางอย่างได้รับการพัฒนาในสาขาอื่น (อาจเป็นไปตามแนวของบางอย่างเช่นนี้หรือไม่?) บางคนสามารถนึกถึงโดเมนอื่นที่มีการวิเคราะห์ความเสถียรในระยะยาวของแผนที่ซีรีย์พลังงานที่มีจุดคงที่ที่จุดกำเนิดดังนั้นเราอาจแบ่งปันความรู้หรือรับแนวคิดใหม่ ๆ ตัวอย่างหนึ่งที่ฉันรู้คืองานของฟิชแมนและ "โหมดเร่งความเร็ว" ในฟิสิกส์อะตอม มีคนอื่นไหม? ระบบอื่นใดที่สามารถสร้างแบบจำลองเป็นโรเตอร์เตะหรือแผนที่ Henon

1
BDF vs เวลา Runge Kutta โดยนัย
มีเหตุผลใดบ้างที่เหตุใดจึงควรเลือกลำดับสูง Runge Kutta (IMRK) ในช่วงเวลา BDF? BDF ดูเหมือนง่ายกว่าสำหรับฉันเนื่องจาก stage IMRK ต้องการเชิงเส้นเชิงเส้นต่อเวลา ความมั่นคงสำหรับ BDF และ IMRK ดูเหมือนจะเป็นจุดที่สงสัย ฉันไม่พบทรัพยากรใด ๆ ในการเปรียบเทียบ / การเปรียบเทียบเวลาโดยนัยQQqQQq ถ้าช่วยได้เป้าหมายสุดท้ายคือให้ฉันเลือก stepper เวลาโดยปริยายที่สูงสำหรับ PDE การแพร่กระจายแบบการพาความร้อน

1
อัตราการลู่เข้าของตัวแก้ปัญหา FFT Poisson
อัตราการรวมทางทฤษฎีสำหรับตัวแก้พิษแบบ FFT คืออะไร? ฉันกำลังแก้สมการปัวซอง: กับ n ( x , y , z ) = 3∇2VH( x , y, z) = - 4 πn ( x , y, z)∇2VH(x,Y,Z)=-4πn(x,Y,Z)\nabla^2 V_H(x, y, z) = -4\pi n(x, y, z) บนโดเมน[0,2]×[0,2]×[0,2]โดยมีเงื่อนไขขอบเขตเป็นระยะ ความหนาแน่นประจุนี้เป็นกลางสุทธิ วิธีแก้ปัญหานั้นได้รับ: VH(x)=∫n(n ( x , y, z) = 3π( ( x - …

2
อัลกอริธึมที่มีประสิทธิภาพและแม่นยำสำหรับการประเมินฟังก์ชั่น hypergeometric คืออะไร?
ฉันอยากรู้ว่าอัลกอริธึมเชิงตัวเลขที่ดีใดที่มีอยู่สำหรับการประเมินฟังก์ชัน hypergeometric ทั่วไป (หรืออนุกรม) ที่กำหนดเป็น pFq(a1,…,ap;b1,…,bq;z)=∑k=0∞(a1)k⋯(ap)k(b1)k⋯(bq)kzkk!pFq(a1,…,ap;b1,…,bq;z)=∑k=0∞(a1)k⋯(ap)k(b1)k⋯(bq)kzkk!{}_pF_q(a_1,\ldots,a_p;b_1,\ldots,b_q;z) = \sum_{k=0}^{\infty} \frac{(a_1)_k\cdots(a_p)_k}{(b_1)_k\cdots(b_q)_k}\frac{z^k}{k!} โดยทั่วไปชุดนี้ไม่จำเป็นต้องมาบรรจบกันอย่างรวดเร็ว (หรือเลย) ดังนั้นการสรุปคำศัพท์ทีละคำดูเหมือนน้อยกว่าอุดมคติ มีวิธีอื่นที่ใช้งานได้ดีกว่านี้หรือไม่ โดยเฉพาะฉันกำลังมองหาบางอย่างที่จะให้ความแม่นยำ 4 หรือ 5 หลักพร้อมการคำนวณที่สมเหตุสมผล ส่วนใหญ่กรณีทั่วไปที่ผมมักจะเห็นใช้มีและP = 2 , Q = 1แต่ในโครงการโดยเฉพาะอย่างยิ่งผมทำงานเกี่ยวกับฉันมีความจำเป็นในการP = 1 , Q = 2 เห็นได้ชัดว่าอัลกอริธึมทั่วไปสำหรับpและqนั้นเป็นอุดมคติ แต่ฉันจะทำตามที่ฉันจะได้รับp=1,q=1p=1,q=1p=1,q=1p=2,q=1p=2,q=1p=2,q=1p=1,q=2p=1,q=2p=1,q=2pppqqq

2
(วิธี) เขียนการจำลองที่ทำงานเร็วขึ้น?
ฉันได้เริ่มใช้ python เป็นภาษาการเขียนโปรแกรมสำหรับทำงานที่ได้รับมอบหมายทั้งหมดใน CFD ฉันมีประสบการณ์การเขียนโปรแกรมน้อยมาก ฉันมาจากภูมิหลังทางวิศวกรรมเครื่องกลและกำลังศึกษาต่อระดับสูงกว่าในสาขาวิศวกรรมการบินและอวกาศ บางครั้งด้านการคำนวณของ CFD นั้นน่าเบื่อกว่าจัดการสมการหรือทำคณิตศาสตร์ แนวทางทั่วไปที่ทำให้โปรแกรมของเราทำงานเร็วขึ้นคืออะไร ลูกเล่นอะไรที่ต้องทำสิ่งต่าง ๆ อย่างขนานกัน? จะเขียนรหัสที่ทำงานได้เร็วขึ้นได้อย่างไร ฉันจะหาแหล่งข้อมูลได้ที่ไหน (เข้าใจได้ง่ายสำหรับคนธรรมดาอย่างฉัน) ที่ตอบคำถามข้างต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.