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

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

2
FeniCS: แสดงองค์ประกอบลำดับสูง
ฉันเพิ่งเริ่มสับสนกับ FEniCS ฉันกำลังแก้ไข Poisson ด้วยองค์ประกอบลำดับที่ 3 และต้องการให้เห็นภาพผลลัพธ์ อย่างไรก็ตามเมื่อฉันใช้ plot (u) การสร้างภาพข้อมูลเป็นเพียงการแก้ไขเชิงเส้นของผลลัพธ์ ฉันได้สิ่งเดียวกันเมื่อฉันส่งออกไปยัง VTK ในรหัสอื่นที่ฉันทำงานด้วยฉันเขียนเอาต์พุต VTK ที่จะเพิ่มองค์ประกอบการสั่งซื้อที่สูงขึ้นเพื่อให้พวกเขาดูลำดับที่สูงขึ้นใน Paraview มีอะไรเช่นนี้ (หรือดีกว่า) ใน FEniCS หรือไม่

4
วิธี ODE ที่เหมาะสมที่สุดสำหรับการประเมิน RHS จำนวนคงที่
ในทางปฏิบัติรันไทม์ของการแก้ IVP คือ มักจะครอบงำโดยระยะเวลาของการประเมินทางด้านขวามือ (RHS) เดอะฉให้เราสมมติว่าการดำเนินการอื่น ๆ ทั้งหมดนั้นทันที (เช่นไม่มีค่าใช้จ่ายในการคำนวณ) หากรันไทม์โดยรวมสำหรับการแก้ IVP ถูก จำกัด แล้วนี้จะเทียบเท่ากับการ จำกัด จำนวนของการประเมินผลของบาง{N}x ( t 0 ) = x 0 f f N ∈ Nx˙(t)=f(t,x(t)) for t∈[t0,t1]x˙(t)=f(t,x(t)) for t∈[t0,t1] \dot{x}(t) = f(t, x(t)) \quad \text{ for } t \in [t_0, t_1] x(t0)=x0x(t0)=x0 x(t_0) = x_0 ffffffN∈NN∈NN \in …

5
การคำนวณเพื่อนบ้านที่ใกล้เคียงที่สุดซ้ำสำหรับจุดข้อมูลนับล้านช้าเกินไป
ฉันมีชุดข้อมูลที่ใช้เป็นล้านจุดข้อมูลในแบบ 3 มิติ สำหรับการคำนวณที่ฉันทำฉันจำเป็นต้องคำนวณเพื่อนบ้าน (ค้นหาช่วง) ไปยังจุดข้อมูลแต่ละจุดในรัศมีลองปรับฟังก์ชั่นคำนวณข้อผิดพลาดสำหรับการพอดีทำซ้ำสำหรับ datapoint ต่อไปและอื่น ๆ รหัสของฉันทำงานอย่างถูกต้อง แต่ใช้เวลานานในการรันประมาณ 1 วินาทีต่อดาต้าพอยท์! อาจเป็นเพราะในแต่ละจุดจะต้องค้นหาทั้งชุดข้อมูล มีวิธีที่ฉันสามารถทำให้กระบวนการรวดเร็ว ฉันมีความคิดว่าถ้าฉันสามารถสร้างความสัมพันธ์แบบ adjacency บางอย่างระหว่างเพื่อนบ้านแรกแล้วนี่อาจช้าน้อยลง ถ้าช่วยได้ฉันพยายามค้นหาความกว้างของหน้าต่าง Parzen ที่เหมาะสมในแบบ 3 มิติ

3
วิธีการแสดงออกที่ซับซ้อนนี้โดยใช้ชิ้นส่วนที่เป็นก้อน
ฉันต้องการใช้นิพจน์ต่อไปนี้ใน Python: ที่xและyเป็นอาร์เรย์ numpy ขนาดnและkเป็นอาร์เรย์ numpy ขนาดn × n ขนาดnอาจสูงถึงประมาณ 10,000 และฟังก์ชั่นเป็นส่วนหนึ่งของลูปภายในที่จะถูกประเมินหลายครั้งดังนั้นความเร็วจึงมีความสำคัญxi=∑j=1i−1ki−j,jai−jaj,xi=∑j=1i−1ki−j,jai−jaj, x_i = \sum_{j=1}^{i-1}k_{i-j,j}a_{i-j}a_j, xxxyyynnnkkkn×nn×nn\times nnnn เป็นการดีที่ฉันต้องการหลีกเลี่ยงการวนซ้ำไปมาโดยสิ้นเชิง แต่ฉันคิดว่ามันไม่ใช่จุดจบของโลกถ้ามี ปัญหาคือฉันมีปัญหาในการดูวิธีการทำโดยไม่ต้องมีลูปซ้อนกันสองสามครั้งและมีแนวโน้มที่จะทำให้มันค่อนข้างช้า ใครสามารถดูวิธีการแสดงสมการข้างต้นโดยใช้ numpy ในวิธีที่มีประสิทธิภาพและควรอ่านด้วยหรือไม่ โดยทั่วไปแล้ววิธีที่ดีที่สุดในการเข้าถึงของประเภทนี้คืออะไร
14 python  numpy 

3
อาการป่วยเมื่อใช้วิธีการโดยตรงคืออะไร
สมมติว่าเรามีระบบเชิงเส้นและเราไม่รู้อะไรเลยเกี่ยวกับการปรับสภาพและไม่มีข้อมูลเบื้องต้นเกี่ยวกับการแก้ปัญหา เราสุ่มสี่สุ่มห้าใช้กำจัดแบบเกาส์และได้รับการแก้ปัญหาบางxxxxเป็นไปได้หรือไม่ที่จะตัดสินว่าโซลูชันนี้เชื่อถือได้หรือไม่ (เช่นระบบมีสภาพดี) โดยไม่ต้องวิเคราะห์เมทริกซ์เบื้องต้นอย่างละเอียดหรือไม่ ขนาดของ pivots ให้ข้อมูลที่เชื่อถือได้หรือไม่? และโดยทั่วไปอะไรคือแนวทางหลักในการตรวจจับการเสียสภาพ "ในทันที"

1
การปรับระดับต่ำส่งผลต่อการรวมกันของวิธี Krylov อย่างไร
บอกว่าฉันมีระบบเชิงเส้นx = Bซึ่งลู่อย่างรวดเร็วโดยใช้วิธีการที่เหมาะสม Krylov (เช่น CG หรือ GMRES) สำหรับทุกข ถ้าBเป็นเมทริกซ์ที่มีระดับต่ำrวิธี Krylov เดียวกันบนระบบ( A + B ) x = b จะมาบรรจบกันอย่างรวดเร็ว (โดยมีการวนซ้ำจำนวนมากที่ขึ้นอยู่กับrเท่านั้น)Ax=bAx=bA x = bbbbBBBrrr(A+B)x=b(A+B)x=b(A + B) x = brrr ตัวอย่างของระบบดังกล่าวคือความยืดหยุ่นของเมมเบรนที่ผ่านการปรับสภาพล่วงหน้าและการดัดรวมถึงเงื่อนไขความดันอากาศที่ไม่ได้รับการกำหนดเงื่อนไขพร้อมโครงสร้างผลิตภัณฑ์ด้านนอกที่หนาแน่น โปรดทราบว่าคำถามจะเหมือนกันมีหรือไม่มี preconditioning ตั้งแต่เป็นอันดับRเปลี่ยนแปลงของP QP(A+B)Q=PAQ+PBQP(A+B)Q=PAQ+PBQP(A + B)Q = PAQ + PBQrrrPAQPAQPAQ

5
ตัวอย่างการคำนวณ PDE โดยใช้การขนานในพื้นที่และเวลา
ในการแก้ปัญหาเชิงตัวเลขของการเริ่มต้นโคนค่าขอบเขตมันเป็นเรื่องธรรมดามากที่จะจ้างเท่าเทียมในพื้นที่ มันเป็นเรื่องธรรมดาที่จะใช้รูปแบบของความเท่าเทียมกันใน discretization เวลาและความเท่าเทียมนั้นมักจะ จำกัด มาก ฉันรับรู้ถึงการเพิ่มขึ้นของรหัสและงานตีพิมพ์ที่แสดงให้เห็นถึงความเท่าเทียมกันทางโลก แต่ไม่มีใครรวมถึงความเท่าเทียมเชิงพื้นที่ มีตัวอย่างของการใช้งานที่มีความเท่าเทียมในพื้นที่และเวลาหรือไม่ ฉันสนใจทั้งสิ่งพิมพ์และรหัสที่มี

4
อะไรจะเป็นวิธีที่ดีที่สุดในการเขียนโค้ดสำหรับกระดาษเพื่อให้ผู้อ่านสามารถจับคู่ผลลัพธ์กับโค้ดที่สร้างได้อย่างชัดเจน?
ฉันกำลังเขียนกระดาษที่ทำซ้ำได้และกระดาษนั้นมีผลการคำนวณที่สร้างโดยสคริปต์ Python (สคริปต์ MATLAB ที่คล้ายกันสร้างผลลัพธ์ที่เหมือนกันเกือบทั้งหมด) ฉันรู้สึกว่ากระดาษจะง่ายต่อการเข้าใจสำหรับผู้อ่านหากพวกเขาสามารถจับคู่การคำนวณในกระดาษกับการคำนวณในรหัส งานนำเสนอแบบแผนเชิงนามธรรมและตัวอย่างในกระดาษควรทำให้พิธีการนี้เป็นรูปธรรมมากขึ้นสำหรับผู้อ่าน (หลายคนจะเป็นวิศวกร) รหัสอาจเป็นบันทึกที่มีรายละเอียดมากที่สุดเกี่ยวกับวิธีการคำนวณและการทำให้ชัดเจนสามารถช่วยเราได้ในระหว่างกระบวนการตรวจสอบ ไม่มีใครมีข้อเสนอแนะเกี่ยวกับวิธีการทำให้การติดต่อระหว่างรหัสและผลลัพธ์การคำนวณ (ตัวเลข, สมการ) ชัดเจนมากขึ้น? ตัวอย่างเช่นฉันคิดว่าเมื่อมันมาถึงบรรทัดของโค้ดที่ใช้ขั้นตอนต่าง ๆ ในกระดาษฉันสามารถอ้างอิงหมายเลขสมการ (มันน่าอัศจรรย์ถ้าฉันสามารถอ้างอิงข้ามระหว่างรหัสและ LaTeX แต่การติดฉลากด้วยมือนั้นดี) และฉันสามารถเขียนฟังก์ชั่นที่สอดคล้องกับตัวอย่างและตัวเลขต่าง ๆ เช่น def example_1(): # Insert code corresponding to first example pass def figure_1(): # Insert code that generates Figure 1 pass หากรหัสมีขนาดใหญ่และฉันไม่ได้พยายามอธิบายว่าวิธีการทางคณิตศาสตร์ที่แตกต่างกันจำนวนมากที่ใช้ในงานวิศวกรรมนั้นเหมือนกันจริง ๆ ฉันอาจจะไม่รำคาญมากนักกับการทำให้รหัสชัดเจน แต่ให้ลักษณะนามธรรมของ กระดาษและฐานรหัสขนาดเล็กดูเหมือนว่าอาจมีค่าในแบบฝึกหัดนี้

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

6
มีห้องสมุดวิทยาศาสตร์โอเพ่นซอร์สที่ใช้ Fortran สมัยใหม่กับ OOP หรือไม่?
ฉันใช้เวลาสองสามเดือนที่ผ่านมาในการเขียนโปรแกรม Fortran เพื่อแก้ปัญหาระบบ PDE (อธิบายการไหลของของไหลและการเผาไหม้) ฉันพยายามใช้ Fortran มาตรฐานล่าสุดและความสามารถของ OOP ใหม่ที่ Fortran มี ฉันทำงานด้วยตัวเองและไม่มีกูรูด้านฟอร์แทรนข้างฉันเพื่อถามคำถามดังนั้นวิธีที่จะเรียนรู้ให้ฉันก็คือการดูห้องสมุด / นักแก้ปัญหาอื่น ๆ ที่ใช้ Fortran ที่ทันสมัย น่าเสียดายที่ห้องสมุดของ Fortran ทุกแห่งในนั้นดูเหมือนว่าจะถูกเขียนใน Fortran ที่เก่าแก่ทีเดียว ดังนั้นฉันต้องคิดผ่านการออกแบบชั้นเรียนและการมีปฏิสัมพันธ์กับตัวเอง และฉันก็ไม่ได้เป็นคนที่รับรองว่าฉันทำถูกต้องโดยเฉพาะอย่างยิ่งถ้ามีคนมองจากมุมมองของ preformance แต่บางทีฉันอาจพลาดบางสิ่งบางอย่างและมีแพ็คเกจทางวิทยาศาสตร์สมัยใหม่ที่เขียนขึ้นหาก Fortran และใช้ OOP หรือไม่ มีไลบรารี C ++ ที่ดีมากมายที่จะเรียนรู้จาก (OpenFOAM, deal.II และอื่น ๆ ) และไลบรารี Python ภาษาเหล่านั้นมีชุมชนที่ใหญ่กว่าโดยทั่วไปเช่นกัน อาจดีกว่าที่จะวาง Fortran และเปลี่ยนภาษาถ้าฉันต้องการเรียนรู้จากตัวอย่าง?
14 fortran 

4
เงื่อนไขขอบเขตสำหรับสมการการพาความร้อนแยกด้วยวิธีผลต่างอันตะ
ฉันพยายามค้นหาแหล่งข้อมูลเพื่อช่วยอธิบายวิธีการเลือกเงื่อนไขขอบเขตเมื่อใช้วิธีการผลต่าง จำกัด เพื่อแก้ PDE หนังสือและบันทึกที่ฉันมีอยู่ในปัจจุบันสามารถเข้าถึงทุกคนพูดในสิ่งที่คล้ายกัน: กฎทั่วไปที่ควบคุมเสถียรภาพในการปรากฏตัวของเขตแดนนั้นซับซ้อนเกินไปสำหรับข้อความเกริ่นนำ; พวกเขาต้องการเครื่องจักรทางคณิตศาสตร์ที่ซับซ้อน (A. Iserles เป็นสนามแรกในการวิเคราะห์เชิงตัวเลขของสมการเชิงอนุพันธ์) ตัวอย่างเช่นเมื่อพยายามใช้วิธี leapfrog 2 ขั้นตอนสำหรับสมการการพา: un+1i=un−1i+μ(uni+1−uni−1)uin+1=uin−1+μ(ui+1n−ui−1n)u_i^{n+1} = u_i^{n-1} + \mu (u_{i+1}^n - u_{i-1}^n) ใช้ MATLAB M = 100; N = 100; mu = 0.5; c = [mu 0 -mu]; f = @(x)(exp(-100*(x-0.5).^2)); u = zeros (M, N); x = 1/(M+1) * …

1
อัลกอริทึม Remez
อัลกอริทึม Remez เป็นกิจวัตรซ้ำที่รู้จักกันดีเพื่อประมาณฟังก์ชั่นโดยพหุนามในบรรทัดฐาน minimax แต่อย่างที่ Nick Trefethen [1] พูดถึง: ส่วนใหญ่ของ [การใช้งาน] ย้อนกลับไปหลายปีและในความเป็นจริงส่วนใหญ่ของพวกเขาไม่ได้แก้ปัญหาการประมาณทั่วไปที่ดีที่สุดตามที่ได้กล่าวไว้ข้างต้น แต่ตัวแปรที่เกี่ยวข้องกับตัวแปรแยกหรือการกรองดิจิทัล เราสามารถค้นหาโปรแกรมคอมพิวเตอร์อื่น ๆ ได้ไม่กี่โปรแกรม แต่โดยรวมแล้วดูเหมือนว่าไม่มีโปรแกรมที่ใช้กันอย่างแพร่หลายในปัจจุบันสำหรับการคำนวณที่ดีที่สุด เราสามารถคำนวณวิธีการแก้ปัญหาแบบ minimax ได้เช่นกันโดยใช้การเพิ่มประสิทธิภาพกำลังสองน้อยที่สุดหรือการเพิ่มประสิทธิภาพนูนเช่นการใช้ Matlab และกล่องเครื่องมือ CVX ฟรีที่ใช้กับฟังก์ชัน Runge ใน [-1, 1]: m = 101; n = 11; % 101 points, polynomial of degree 10 xi = linspace(-1, 1, m); % equidistant points in …

4
ตัวอย่างของวิธีจำลองต่าง จำกัด แน่นอน
เท่าที่ฉันพยายามค้นหาคำอธิบายสั้น ๆ บนอินเทอร์เน็ตฉันไม่สามารถเข้าใจแนวคิดของความแตกต่างที่แน่นอนของการเลียนแบบหรือว่ามันเกี่ยวข้องกับความแตกต่างแน่นอน จำกัด มาตรฐาน มันจะมีประโยชน์จริง ๆ ที่จะเห็นตัวอย่างง่ายๆของวิธีการนำไปใช้สำหรับ PDE เชิงเส้นแบบคลาสสิก (การไฮเพอร์โบลิกรูปไข่และพาราโบลา)

3
วิธีกำหนดเงื่อนไขขอบเขตในวิธีผลต่าง จำกัด
ฉันมีปัญหาเมื่อฉันต้องการใช้การประมาณค่าศูนย์สั่งต่างสูง: (−ui+2,j+16ui+1,j−30ui,j+16ui−1,j−ui−2,j12)(−ui+2,j+16ui+1,j−30ui,j+16ui−1,j−ui−2,j12)\left(\frac{-u_{i+2,j}+16u_{i+1,j}-30u_{i,j}+16u_{i-1,j}-u_{i-2,j}}{12}\right) สำหรับสมการปัวซอง ในโดเมนสแควร์ที่เงื่อนไขขอบเขตคือ:(uxx+uyy=0)(uxx+uyy=0)(u_{xx}+u_{yy}=0) Δ x = Δ y = 0.1u(0,y)=u(x,0)=u(x,1)=0,u(1,y)=sinπyu(0,y)=u(x,0)=u(x,1)=0,u(1,y)=sin⁡πyu(0,y)=u(x,0)=u(x,1)=0,u(1,y)=\sin \pi y Δx=Δy=0.1Δx=Δy=0.1\Delta{x}=\Delta{y}=0.1 เมื่อฉันต้องการได้รับค่าของจุดภายในของโดเมนการพิจารณาประมาณนี้บางจุดขึ้นอยู่กับจุดนอกของขอบเขต ตัวอย่างเช่นจำเป็นต้องมีค่าของu i - 2 , j = u - 1 , 0จุดซึ่งอยู่นอกขอบเขต ใครก็ได้โปรดช่วยฉันในกรณีนี้ u1,1u1,1u_{1,1}ui−2,j=u−1,0ui−2,j=u−1,0u_{i-2,j}=u_{-1,0}

2
PETSc สำหรับ Dense Matrices มีประโยชน์อย่างไร
ทุกที่ที่ฉันเห็น PETSc tutorial / เอกสาร ฯลฯ บอกว่ามันมีประโยชน์สำหรับพีชคณิตเชิงเส้นและมักจะระบุว่าระบบจะได้ประโยชน์ สิ่งที่เกี่ยวกับเมทริกซ์หนาแน่น? ผมกังวลเกี่ยวกับการแก้x = Bสำหรับหนาแน่นA x = bAx=ขAx=bAAA ฉันเขียนโค้ดของตัวเองสำหรับ CG และ QMR ใน Fortran สร้างพื้นฐานคือการฉีกออกจากกันรหัสเทียมและเพิ่มการปฏิบัติหน่ายเป็นไปได้ ( ddot, dnrmและdgemv) ที่มีการปรับตัวเองเล็ก ๆ น้อย ๆ สิ่งนี้จะเปรียบเทียบกับ PETSc ได้อย่างไร ฉันรู้ว่าคำตอบที่ดีที่สุดสำหรับฉันที่จะลองด้วยตัวเอง แต่ด้วยเหตุผลของเวลาและอื่น ๆ นั่นเป็นไปไม่ได้ ความช่วยเหลือใด ๆ ที่ชื่นชมมาก

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