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

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

2
ฟังก์ชั่น LAPACK ที่สอดคล้องกันหลัง Matlab [Q, R, E] = qr (A) คืออะไร?
ฉันกำลังพยายามคำนวณการจัดอันดับที่ดีสำหรับเมทริกซ์อย่างถูก ดังนั้นฉันจึงคำนวณการถอดรหัสคอลัมน์โดยใช้การถอดรหัส QRAAA [Q,R,E]=qr(A) ใน Matlab ฉันประเมินระดับAAAใช้ tol = size(A,n)*eps*norm(A,'fro'); r = sum(abs(diag(R))>tol) มันใช้งานได้ดีและพล็อตในแนวทแยงทั้งหมดของ R มีลักษณะดังนี้: หากพอร์ตอัลกอริธึมทั้งหมดเป็น C / Fortran ฉันจะแทนที่ [Q, R, E] = qr (A) โดยใช้ DGEQP3 จาก LAPACK ซึ่งคำนวณคอลัมน์ที่มีการแยกย่อย QR แต่ถ้าฉันใช้การประมาณแบบเดียวกันกับอันดับฉันส่วนใหญ่เข้าใจผิด พล็อตเดียวกันสำหรับผลิตจาก DGEQP3 ดูเหมือนว่า RRR อินพุตเมทริกซ์เหมือนกันทั้งสองการทดลอง คำถามของฉันตอนนี้ฟังก์ชั่น LAPACK คือคอลัมน์ใดที่หมุนแกน QR การสลายตัวจาก Matlab พึ่งพา? ขอบคุณสำหรับความช่วยเหลือใด ๆ Grisu แก้ไข: …
12 matlab  lapack 

1
ควรรายงานข้อผิดพลาดในห้องสมุดวิทยาศาสตร์อย่างไร
มีปรัชญามากมายในสาขาวิศวกรรมซอฟต์แวร์ที่แตกต่างกันเกี่ยวกับวิธีที่ห้องสมุดควรจัดการกับข้อผิดพลาดหรือเงื่อนไขพิเศษอื่น ๆ บางอย่างที่ฉันเคยเห็น: ส่งคืนรหัสข้อผิดพลาดพร้อมผลลัพธ์ที่ส่งคืนโดยอาร์กิวเมนต์ตัวชี้ นี่คือสิ่งที่ PETSc ทำ ส่งคืนข้อผิดพลาดโดยค่า Sentinel ตัวอย่างเช่น malloc ส่งคืน NULL หากไม่สามารถจัดสรรหน่วยความจำได้sqrtจะส่งคืน NaN หากคุณส่งผ่านจำนวนลบเป็นต้นวิธีการนี้ใช้ในฟังก์ชัน libc จำนวนมาก โยนข้อยกเว้น ใช้ในข้อตกลง II, Trilinos ฯลฯ ส่งคืนชนิดของตัวแปร ตัวอย่างเช่นฟังก์ชัน c ++ ที่ผลตอบแทนวัตถุของการพิมพ์Resultถ้ามันจะทำงานได้อย่างถูกต้องและใช้ประเภทเพื่ออธิบายวิธีการที่จะล้มเหลวก็จะกลับมาErrorstd::variant<Error, Result> ใช้ยืนยันและผิดพลาด ใช้ใน p4est และบางส่วนของการเขียนด้วยลายมือ ปัญหาของแต่ละวิธี: การตรวจสอบข้อผิดพลาดทุกครั้งจะแนะนำรหัสพิเศษจำนวนมาก ค่าที่จะเก็บผลลัพธ์จะต้องประกาศก่อนเสมอแนะนำตัวแปรชั่วคราวจำนวนมากที่อาจใช้เพียงครั้งเดียว วิธีการนี้จะอธิบายถึงข้อผิดพลาดที่เกิดขึ้น แต่อาจเป็นเรื่องยากที่จะตัดสินว่าทำไมหรือสำหรับ call call stack ที่ใด กรณีข้อผิดพลาดง่ายต่อการเพิกเฉย ยิ่งไปกว่านั้นฟังก์ชั่นจำนวนมากไม่สามารถมีค่า Sentinel ที่มีความหมายได้หากช่วงของประเภทเอาต์พุตทั้งหมดเป็นผลลัพธ์ที่เป็นไปได้ ปัญหาเดียวกันจำนวนมากเช่น # 1 ทำได้เฉพาะใน …
11 software 

2
ความซับซ้อนของเมทริกซ์ผกผันในจำนวน
ฉันกำลังแก้สมการเชิงอนุพันธ์ที่ต้องสลับเมทริกซ์จตุรัสหนาแน่น เมทริกซ์ผกผันนี้ใช้เวลาในการคำนวณมากที่สุดดังนั้นฉันจึงสงสัยว่าถ้าฉันใช้อัลกอริทึมที่เร็วที่สุด ทางเลือกในปัจจุบันของฉันคือnumpy.linalg.inv จากตัวเลขของฉันฉันเห็นว่ามันปรับขนาดเป็นโดยที่ n คือจำนวนแถวดังนั้นวิธีที่ดูเหมือนจะเป็นการกำจัดแบบเกาส์เซียนO(n3)O(n3)O(n^3) ตามWikipediaมีอัลกอริทึมที่เร็วกว่าใช้ได้ ไม่มีใครรู้ว่ามีห้องสมุดที่ใช้สิ่งเหล่านี้หรือไม่? ฉันสงสัยว่าทำไม numpy จึงไม่ใช้อัลกอริธึมที่เร็วกว่านี้?

1
การกู้คืนจำนวนจินตภาพของการวิเคราะห์ต่อเนื่องจากส่วนจริง
สถานการณ์ของฉัน ฉันมีฟังก์ชั่นของตัวแปรเชิงซ้อนนิยามผ่านอินทิกรัลที่ซับซ้อน สิ่งที่ฉันสนใจคือค่าของฟังก์ชั่นนี้ในแกนจินตภาพ ฉันมีการเข้าถึงตัวเลขฟังก์ชั่นนี้บนริบบิ้นต่อไปนี้: Z = ( x , Y ) ∈ ( - ∞ , ∞ ) × [ - 1 , 1 ] การแสดงออกที่สมบูรณ์เป็นทางการแตกต่างนอกโดเมนนี้และดังนั้นฉันต้องการการวิเคราะห์ต่อเนื่อง เพื่อสรุปสถานการณ์ของฉันในภาพf(z)f(z)f(z)z=(x,y)∈(−∞,∞)×[−1,1]z=(x,y)∈(−∞,∞)×[−1,1]z=(x,y)\in (-\infty,\infty)\times[-1,1] นี่คือสิ่งที่ฉันรู้เกี่ยวกับบนริบบิ้นนี้จากตัวเลข:f(z)f(z)f(z) มันมีความสมมาตรพร้อมกันเกี่ยวกับแกนจินตภาพและแกนจริง มันสูญสลายไปที่ศูนย์ที่ ∞Re(z)→∞Re(z)→∞Re(z)\rightarrow\infty มันพัดขึ้นมาใกล้ฉัน มันอาจเป็นเสาหรือจุดแตกกิ่งผมไม่รู้ ฉันสงสัยว่าธรรมชาติของความแปลกประหลาดนี้ (และอาจจะทั้งหมดเอกบางแห่งอื่น ๆ ของความต่อเนื่องการวิเคราะห์) ขึ้นอยู่กับเฉพาะ parameterization ξของฟังก์ชันนี้ (ดูหนึ่งรายละเอียดด้านล่าง)z=±iz=±iz=\pm iξξ\xi ในความเป็นจริงมันดูคล้ายกับหรือ1 / ( 1 + z 2 …

1
ค่าลักษณะเฉพาะที่เล็กที่สุดโดยไม่ผกผัน
สมมติว่าA∈Rn×nA∈Rn×nA\in\mathbb{R}^{n\times n}เป็นเมทริกซ์สมมาตรเชิงบวกแน่นอน AAAใหญ่พอที่จะแก้ปัญหาAx=bAx=bAx=bได้โดยตรง มีอัลกอริทึมซ้ำสำหรับการหาค่าลักษณะเฉพาะที่เล็กที่สุดของAAAที่ไม่เกี่ยวข้องกับการกลับAAAในแต่ละการวนซ้ำหรือไม่? นั่นคือฉันจะต้องใช้อัลกอริทึมซ้ำเช่นการไล่ระดับสีแบบคอนจูเกตเพื่อแก้Ax=bAx=bAx=bดังนั้นการใช้ซ้ำหลายครั้งA−1A−1A^{-1}ดูเหมือนว่า "วงใน" ที่มีราคาแพง ฉันต้องการไอเกนิคตัวเดียว ขอบคุณ!

3
การประเมินเชิงตัวเลขของอินทิกรัลการแกว่งสูง
ในหลักสูตรขั้นสูงนี้เกี่ยวกับการประยุกต์ใช้ทฤษฎีฟังก์ชันที่ซับซ้อนณ จุดหนึ่งในการออกกำลังกายอินทิกรัลของการแกว่ง I(λ)=∫∞−∞cos(λcosx)sinxxdxI(λ)=∫−∞∞cos⁡(λcos⁡x)sin⁡xxdxI(\lambda)=\int_{-\infty}^{\infty} \cos (\lambda \cos x) \frac{\sin x}{x} d x จะต้องมีการประมาณค่าขนาดใหญ่ของโดยใช้วิธีจุดอานในระนาบเชิงซ้อนλλ\lambda เนื่องจากธรรมชาติมีความผันผวนสูงอินทิกรัลนี้จึงยากต่อการประเมินโดยใช้วิธีการส่วนใหญ่ นี่เป็นสองส่วนของกราฟของ integrand และสำหรับที่ระดับต่างกัน:λ=10λ=10\lambda = 10 ลำดับการประมาณเชิงซีมโทติคคือ I1(λ)=cos(λ−14π)2πλ−−−√I1(λ)=cos⁡(λ−14π)2πλI_{1}(\lambda) = \cos \left(\lambda-\frac{1}{4} \pi\right) \sqrt{\frac{2 \pi}{\lambda}} และการปรับแต่งเพิ่มเติม (เล็กลงมาก) จะเพิ่มคำศัพท์ I2(λ)=18sin(λ−14π)2πλ3−−−√I2(λ)=18sin⁡(λ−14π)2πλ3I_2(\lambda)=\frac{1}{8} \sin \left(\lambda-\frac{1}{4} \pi\right) \sqrt{\frac{2 \pi}{\lambda^{3}}} กราฟของค่าที่ประมาณเป็นฟังก์ชันของมีลักษณะดังนี้:λλ\lambda ทีนี้คำถามของฉันมาดูว่าการประมาณนั้นดีแค่ไหนฉันต้องการเปรียบเทียบกับ "มูลค่าที่แท้จริง" ของอินทิกรัลหรือมากกว่ากับการประมาณที่ดีกับอินทิกรัลเดียวกันโดยใช้อัลกอริธึมอิสระ เนื่องจากขนาดเล็กของการแก้ไข subleading ฉันคาดว่าสิ่งนี้จะใกล้เคียงจริง ฉันพยายามประเมินอินทิกรัลสำหรับโดยใช้อัลกอริธึมอื่น แต่มีความสำเร็จน้อยมาก: Mathematica และ Matlab โดยใช้ตัวรวมตัวเลขเริ่มต้นไม่สามารถจัดการเพื่อสร้างค่าที่มีความหมาย (และรายงานสิ่งนี้อย่างชัดเจน), mpmathแทนที่และวิธีการ …


2
อันตรายจากการคำนวณทางคณิตศาสตร์ที่ซับซ้อนในการคำนวณทางวิทยาศาสตร์
ผลิตภัณฑ์ภายในที่ซับซ้อนได้สองคำนิยามที่แตกต่างกันตัดสินใจโดยการประชุม: ˉ U Tวีหรือยูทีˉวี ใน BLAS ฉันพบกิจวัตร cdotu, zdotu และ cdotc, zdotc สองรูทีนก่อนหน้านี้คำนวณu t v (ผลิตภัณฑ์ด้านในปลอม!) และรูทีนสุดท้ายสองรายการเชื่อมต่อเวกเตอร์แรกในผลิตภัณฑ์ภายใน นอกจากนี้โดยความหมายอย่างใดอย่างหนึ่ง (ผันUหรือV ) ⟨ U , V ⟩ = ¯ ⟨ วี, ยู⟩⟨ u , v ⟩⟨ยู,โวลต์⟩\langle u,v\rangleยู¯Tโวลต์ยู¯Tโวลต์\bar{u}^TvยูTโวลต์¯ยูTโวลต์¯u^T\bar{v}ยูTโวลต์ยูTโวลต์u^Tvยูยูuโวลต์โวลต์v⟨ u , v ⟩ = ⟨ v , u ⟩¯¯¯¯¯¯¯¯¯¯¯⟨ยู,โวลต์⟩=⟨โวลต์,ยู⟩¯\langle u,v\rangle=\overline{\langle v,u\rangle}ด้วยการผัน! ยิ่งไปกว่านั้นตามที่ระบุไว้ในความคิดเห็นการเลือกค่าหลักสำหรับฟังก์ชันที่ซับซ้อนหลายค่าสามารถขึ้นอยู่กับการประชุม คำถามของฉันคือ: ภาวะแทรกซ้อนนี้ทำให้เกิดอันตรายที่แท้จริงสำหรับการใช้เลขคณิตที่ซับซ้อนในการคำนวณทางวิทยาศาสตร์หรือไม่? …

1
การใช้วิธี Runge-Kutta กับลำดับที่สองของ ODE
ฉันจะเปลี่ยนวิธีการของออยเลอร์โดยลำดับที่ 4 ของ Runge-Kutta เพื่อตัดสินว่าการเคลื่อนที่ของฤดูใบไม้ร่วงฟรีนั้นมีขนาดไม่คงที่ (เช่นการลดลงอิสระจาก 10,000 กม. เหนือพื้นดิน) อย่างไร จนถึงตอนนี้ฉันเขียนการรวมอย่างง่ายโดยวิธีออยเลอร์: while() { v += getMagnitude(x) * dt; x += v * dt; time += dt; } ตัวแปร x หมายถึงตำแหน่งปัจจุบัน, v หมายถึงความเร็ว, getMagnitude (x) จะส่งกลับค่าความเร่งบนตำแหน่ง x ฉันพยายามใช้ RK4: while() { v += rk4(x, dt) * dt; // rk4() instead of …

3
องค์ประกอบ จำกัด บนนานา
ฉันต้องการที่จะแก้ปัญหา PDE บางอย่างบน manifolds พูดเช่นสมการรูปไข่บนทรงกลม ฉันจะเริ่มที่ไหน ฉันต้องการที่จะหาสิ่งที่ใช้งานมาก่อนรหัส / ห้องสมุดใน 2d ไม่มีอะไรดังนั้นแฟนซี (ในขณะนั้น) เพิ่มในภายหลัง:ยินดีต้อนรับบทความและรายงาน

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

1
สเกลค่าคงที่สำหรับอัลกอริธึมการค้นหาบรรทัดและภูมิภาคที่เชื่อถือได้
ในหนังสือของ Nocedal & Wright เกี่ยวกับการเพิ่มประสิทธิภาพเชิงตัวเลขมีคำสั่งในหัวข้อ 2.2 (หน้า 27) "โดยทั่วไปการพูดง่ายกว่าที่จะรักษาระดับความไม่แปรเปลี่ยนของอัลกอริธึมการค้นหาบรรทัด ในส่วนเดียวกันพวกเขาพูดคุยเกี่ยวกับการมีตัวแปรใหม่ที่เป็นรุ่นดั้งเดิมของตัวแปรดั้งเดิมซึ่งสามารถช่วยในการค้นหาทั้งสองและภูมิภาคที่เชื่อถือได้ อีกวิธีคือการปรับสภาพล่วงหน้า สำหรับวิธีการภูมิภาคที่เชื่อถือได้นั้นการปรับสภาพล่วงหน้านั้นเทียบเท่ากับการมีภูมิภาคที่เชื่อถือได้รูปไข่และทำให้เกิดความแปรปรวนของสเกล อย่างไรก็ตามสัญชาตญาณที่คล้ายกันไม่ชัดเจนสำหรับการกำหนดเงื่อนไขสำหรับการค้นหาบรรทัด การค้นหาบรรทัดเหมาะกว่าสำหรับขนาด invariance อย่างไร มีข้อควรพิจารณาในทางปฏิบัติบ้างไหม? นอกจากนี้ฉันมีคำถามเกี่ยวกับเงื่อนไขเบื้องต้นสำหรับวิธีภูมิภาคที่เชื่อถือได้ สำหรับปัญหาที่มีเงื่อนไขไม่ดีนักเงื่อนไขที่ดีจะลดจำนวนการทำซ้ำรอบนอกของนิวตันและการทำซ้ำ CG ภายในหรือเฉพาะหลังเท่านั้น? เนื่องจากภูมิภาคที่ไว้วางใจนั้นเป็นรูปวงรีในพื้นที่ดั้งเดิมผู้มีเงื่อนไขเบื้องต้นที่ดีควรนำไปสู่รูปวงรีที่จะเข้ากับภูมิทัศน์ได้ดีขึ้น ฉันรู้สึกว่านี่อาจลดจำนวนการทำซ้ำรอบนอกของนิวตันโดยบังคับให้อัลกอริทึมไปยังทิศทางที่ดีขึ้น ถูกต้องหรือไม่

3
อะไรคือสถานะปัจจุบันของศิลปะในการแก้ PDEs พาราโบลามิติที่สูงขึ้น (สมการSchrödingerหลายอิเล็กตรอน)
สถานะปัจจุบันของศิลปะสำหรับการแก้มิติที่สูงขึ้น (3-10) พาราโบลา PDEs ในโดเมนที่ซับซ้อนที่มีขั้วง่าย (ของรูปแบบ ) และดูดซับเงื่อนไขขอบเขต?1| R⃗ 1- ร⃗ 2|1|r→1−r→2| \frac{1}{|\vec{r}_1 - \vec{r}_2|} โดยเฉพาะฉันสนใจที่จะแก้สมการหลายอิเล็กตรอนSchrödinger: ( ∑ผมΣj ≠ ฉัน[ - ∇2ผม2 ม- ZผมZJ| R⃗ ผม- ร⃗ J|+ V( ร⃗ ผม, t ) ] ) ψ=-i ∂เสื้อψ(∑i∑j≠i[−∇i22m−ZiZj|r→i−r→j|+V(r→i,t)])ψ=−i∂tψ \left( \sum_i \sum_{j\neq i}\left[ -\frac{\nabla_i^2}{2 m} - \frac{Z_i Z_j}{|\vec{r}_i - \vec{r}_j|} + V(\vec{r}_i, …

2
ทำความเข้าใจกับต้นทุนของวิธีการ adjoint สำหรับการเพิ่มประสิทธิภาพ pde-constrained
ฉันพยายามที่จะเข้าใจว่าวิธีการปรับให้เหมาะสมแบบ adjoint นั้นทำงานอย่างไรสำหรับการปรับให้เหมาะสมแบบ จำกัด PDE โดยเฉพาะฉันพยายามเข้าใจว่าทำไมวิธีการ adjoint มีประสิทธิภาพมากขึ้นสำหรับปัญหาที่จำนวนตัวแปรการออกแบบมีขนาดใหญ่ แต่ "จำนวนสมการมีขนาดเล็ก" สิ่งที่ฉันเข้าใจ: พิจารณาปัญหาการปรับให้เหมาะสมแบบ จำกัด PDE ต่อไปนี้: minβ I(β,u(β))s.t.R(u(β))=0minβ I(β,u(β))s.t.R(u(β))=0\min_\beta \text{ } I(\beta,u(\beta))\\ s.t. R(u(\beta))=0 ที่เป็น (ต่อเนื่องเพียงพอ) ฟังก์ชันวัตถุประสงค์ของเวกเตอร์ตัวแปรการออกแบบเบต้าและเวกเตอร์ของราชวงศ์ตัวแปรสนามยู( β )ซึ่งขึ้นอยู่กับตัวแปรการออกแบบและR ( U )เป็นรูปแบบการตกค้างของ PDEIIIββ\betau(β)u(β)u(\beta)R(u)R(u)R(u) เห็นได้ชัดว่าเราสามารถผันแปรแรกของ I และ R δI=∂I∂βδβ+∂I∂uδuδI=∂I∂βδβ+∂I∂uδu\delta I = \frac{\partial I}{\partial \beta}\delta\beta + \frac{\partial I}{\partial u}\delta u δR=∂R∂βδβ+∂R∂uδu=0δR=∂R∂βδβ+∂R∂uδu=0\delta R = …
11 optimization  pde 

2
มีเงื่อนไขเบื้องต้นสำหรับกล่องดำสำหรับวิธีปราศจากเมทริกซ์หรือไม่?
วิธี Jacobian-Free Newton-Krylov (JFNK) และวิธี Krylov โดยทั่วไปจะมีประโยชน์มากเพราะพวกเขาไม่ต้องการการจัดเก็บหรือสร้างเมทริกซ์ที่ชัดเจนเพียงผลลัพธ์ของผลิตภัณฑ์ matrix-vector หากคุณสร้างระบบที่กระจัดกระจายจริง ๆ ก็มีปัจจัยที่จำเป็นหลายอย่างสำหรับคุณ มีวิธีการใดที่ปราศจากเมทริกซ์ที่แท้จริง? Googling มีการอ้างอิงถึง "การประมาณเมทริกซ์" และมีบางสิ่งที่บ่งชี้ว่าเป็นไปได้ โดยทั่วไปวิธีการเหล่านี้ทำงานอย่างไร พวกเขาเปรียบเทียบกับผู้มีประสบการณ์ก่อนได้อย่างไร? ปัจจัยพื้นฐานที่ปราศจากเมทริกซ์ทางฟิสิกส์เป็นวิธีที่จะไปไหม? มีวิธีการใดที่ใช้ได้อย่างเปิดเผยใน wild พูดใน PETSc หรือแพ็คเกจอื่น ๆ ?

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