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

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

2
รูปแบบที่แตกต่างกันแน่นอนสำหรับ "สมการคลื่น" วิธีการของลักษณะ
พิจารณาปัญหาต่อไปนี้ โดยที่เงื่อนไขการบังคับสามารถขึ้นอยู่กับ (ดูแก้ไข 1ด้านล่างสำหรับสูตร) ​​และและอนุพันธ์อันดับแรก นี่คือสมการคลื่น 1 + 1 มิติ เรามีข้อมูลเบื้องต้นกำหนดไว้ที่\}u , v W { u + v = 0 }Wคุณโวลต์= FWuv=F W_{uv} = F U , Vu,vu,vWWW{ u + v = 0 }{u+v=0}\{u+v = 0\} ฉันสนใจวิธีการแก้ปัญหาภายในโดเมนของการพึ่งพาช่วงเวลา และกำลังพิจารณารูปแบบความแตกต่างแน่นอนดังต่อไปนี้{ u + v = 0 , คุณ∈ [ - คุณM, UM] }{ยู+โวลต์=0,ยู∈[-ยูM,ยูM]}\{ …

3
แรงขับสำหรับการเขียนโปรแกรม GPU
ฉันมากใหม่ในการเขียนโปรแกรม GPGPU ดังนั้นโปรดยกโทษให้ฉันถ้าคำถามไม่เหมาะสมโดยเฉพาะอย่างยิ่ง จากสิ่งที่ฉันเข้าใจการเขียนโปรแกรม GPU เป็นงานวิศวกรรมที่ซับซ้อนมากเมื่อเทียบกับการเขียนโปรแกรม CPU ปกติ สิ่งหนึ่งที่จะต้องระมัดระวังอย่างมากเกี่ยวกับปัญหาความแตกต่างการปูกระเบื้องการจัดสรรหน่วยความจำที่ตรึงไว้และการคำนวณอุปกรณ์สื่อสาร / อุปกรณ์โฮสต์ซ้อนทับกัน หลังจากทำวิจัยเล็กน้อยฉันพบห้องสมุดแรงผลักดันซึ่งดูเหมือนว่าพยายามเลียนแบบ C ++ STL มันค่อนข้างดี อย่างไรก็ตามจากประสบการณ์ที่ จำกัด มากของฉันและการได้เห็นการจัดการไมโครที่จำเป็นทั้งหมดเพื่อให้ได้ประสิทธิภาพที่ดีฉันค่อนข้างสงสัยเกี่ยวกับประสิทธิภาพ แรงขับสามารถจัดการกับส่วนการเขียนโปรแกรมที่ซับซ้อนทั้งหมดได้อย่างมีประสิทธิภาพภายในหรือไม่? ห้องสมุดที่รู้จักกันดีบางแห่งเช่น PETSc ดูเหมือนจะใช้แพ็คเกจนี้ซึ่งทำให้ฉันเชื่อว่ามันควรจะเป็นอย่างใด ฉันสงสัยว่าคนที่มีประสบการณ์เกี่ยวกับ CUDA และแรงผลักดันอาจพูดคำหนึ่งหรือสองเกี่ยวกับประสิทธิภาพของแพ็คเกจเมื่อเทียบกับการเขียนโปรแกรม CUDA ระดับต่ำ ฉันสามารถใช้แรงขับได้เมื่อใดและฉันควรเปลี่ยนกลับเป็น CUDA เมื่อใด

3
Explicit Euler method ช้าเกินไปสำหรับปัญหาการเกิดปฏิกิริยา
ฉันกำลังแก้ไขระบบตอบโต้การแพร่ของทัวริงด้วยรหัส C ++ ต่อไปนี้ ช้าเกินไป: สำหรับพื้นผิวพิกเซล 128x128 จำนวนการวนซ้ำที่ยอมรับได้คือ 200 - ซึ่งส่งผลให้เกิดความล่าช้า 2.5 วินาที ฉันต้องการ 400 ซ้ำเพื่อให้ได้ภาพที่น่าสนใจ - แต่ 5 วินาทีของการรอนั้นมากเกินไป นอกจากนี้ขนาดของพื้นผิวควรเป็นจริง 512x512 - แต่มันส่งผลในเวลาที่รอคอยมาก อุปกรณ์คือ iPad, iPod มีโอกาสที่จะทำสิ่งนี้ได้เร็วขึ้นไหม? วิธีออยเลอร์ลู่เข้าช้า (วิกิพีเดีย) - การมีวิธีที่เร็วกว่าจะทำให้จำนวนการทำซ้ำลดลงหรือไม่ แก้ไข:ตามที่โธมัสคลิมเพลชี้ให้เห็นบรรทัด: "ถ้า (m_An [i] [j] <0.0) {... }", "ถ้า (m_Bn [i] [j] <0.0) {... }" มีการล่าช้าในการบรรจบ: หลังจากลบภาพที่มีความหมายปรากฏขึ้นหลังจาก75 ซ้ำ …
10 pde  stiffness 

2
สมการออยเลอร์ใน 2d
ในฐานะที่ได้รับมอบหมายในวิทยาลัยฉันได้จำลอง 1d คำแถลงปัญหาคือการแก้ปัญหาท่อช็อตที่ 1d ที่เกี่ยวข้องกับก๊าซอุดมคติที่อัดได้ในรูปของของไหลทำงาน สำหรับปัญหานี้ฉันแก้ไขระบบสมการของ Eulers โดยใช้ตัวแก้ Riemann ของ Roe ฉันต้องการทราบเพื่อแก้สมการของออยเลอร์ใน 2 หรือ 3 มิติฉันจะเริ่มจากตรงไหน ปัญหาการทดสอบแบบไหนที่ฉันควรพิจารณาก่อน (โปรดอย่าแนะนำนักแก้ปัญหาเชิงพาณิชย์ฉันต้องการเขียนรหัสของตัวเอง) ฉันต้องการความช่วยเหลือในการเขียนรหัสของตัวเอง แหล่งข้อมูลที่ดีที่นำเสนอปัญหา 2 มิติในทางปฏิบัติจริงที่สุดคืออะไร

3
วิธีสร้างฟังก์ชันเส้นโค้งแบบเรียกซ้ำใน C ++
ในขณะนี้ฉันกำลังทำงานกับวิธีการแก้สมการเชิงอนุพันธ์ที่เรียกว่าการจัดระเบียบแบบพื้นฐาน -line สิ่งที่ฉันมีปัญหาคือการสร้างวิธีการสร้างคำสั่งโค้งอิสระโดยมีความสัมพันธ์ ด้วย เงื่อนไขเริ่มต้น และฉันมีปัญหาแม้จะเริ่มต้นด้วยปัญหานี้เนื่องจากการเรียกซ้ำอาจเริ่มจากทั้ง "top" หรือ "bottom" และฉันทำงานเป็นประเภทบล็อกของนักเขียนทั่วไป สิ่งที่ฉันไม่สามารถรับรอบสิ่งที่ฉันต้องทำB 1 i (x)={ 1Bk + 1ผม( x ) = x - xผมxk + i- xผมBkผม+ xk + i + 1- xxk + i + 1- xฉัน+ 1Bkฉัน+ 1( x )Bผมk+1(x)=x-xผมxk+ผม-xผมBผมk+xk+ผม+1-xxk+ผม+1-xผม+1Bผม+1k(x) B^{k+1}_{i}(x)= \frac{x-x_i}{x_{k+i}-x_i}B^k_i + \frac{x_{k+i+1}-x}{x_{k+i+1}-x_{i+1}}B^k_{i+1}(x) B1ผม( x ) = { …
10 c++  b-spline 

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

1
PETSc เคยใช้ประโยชน์จากห้องสมุด LAPACK สำหรับคณิตศาสตร์เมทริกซ์กระจัดกระจายหรือไม่?
การรวบรวม PETSc กับไลบรารี BLAS / LAPACK ภายนอกส่งผลกระทบต่อประสิทธิภาพการทำงานของเมทริกซ์แบบเบาบางหรือไม่หรือใช้ไลบรารีเหล่านั้นเพื่อคำนวณเมทริกซ์หนาแน่นเท่านั้น?

3
ค่าใช้จ่ายในการคูณเมทริกซ์คืออะไร
การคูณเมทริกซ์ (ทั้ง Mat * Mat และ Mat * Vec) มีการปรับมาตราส่วนด้วยจำนวนที่ไม่เป็นศูนย์หรือมีขนาดของเมทริกซ์หรือไม่? หรือการรวมกันของทั้งสอง เกี่ยวกับรูปร่าง ตัวอย่างเช่นฉันมีเมทริกซ์ 100 x 100 พร้อม 100 ค่าในนั้นหรือเมทริกซ์ 1,000 x 1,000 ที่มี 100 ค่า เมื่อยกกำลังสองเมทริกซ์เหล่านี้ (หรือคูณด้วยเมทริกซ์ที่คล้ายกันที่มีการกระจายแบบเดียวกัน) เป็นครั้งแรก (100x100) จะเร็วกว่าวินาที (1000x1000) หรือไม่ มันขึ้นอยู่กับว่าค่าอยู่ที่ไหน? ถ้ามันขึ้นอยู่กับการใช้งานฉันสนใจคำตอบสำหรับ PETSc

2
ความหมายของวิธีการแก้ปัญหา (meta)
สำหรับการปรับให้เหมาะสมจากWikipedia : ในวิทยาการคอมพิวเตอร์metaheuristicกำหนดวิธีการคำนวณที่ปรับแก้ปัญหาโดยพยายามปรับปรุงวิธีแก้ปัญหาผู้สมัครโดยคำนึงถึงการวัดคุณภาพที่กำหนด Metaheuristics มีสมมติฐานน้อยหรือไม่มีเลยเกี่ยวกับปัญหาที่ได้รับการปรับให้เหมาะสมและสามารถค้นหาช่องว่างขนาดใหญ่ของการแก้ปัญหาผู้สมัคร อย่างไรก็ตาม metaheuristic ไม่รับประกันว่าจะพบทางออกที่ดีที่สุด อภิปัญญาหลายคนใช้การเพิ่มประสิทธิภาพสุ่มบางรูปแบบ คำอื่น ๆ ที่มีความหมายคล้ายกันกับ metaheuristic คือ: ปราศจากอนุพันธ์การค้นหาโดยตรงกล่องดำหรือเครื่องมือเพิ่มประสิทธิภาพการแก้ปัญหาเพียงอย่างเดียว มีการตีพิมพ์หนังสือและแบบสำรวจหลายเล่มเกี่ยวกับเรื่องนี้ ฉันสงสัยว่าจะบอกได้อย่างไรว่าวิธีการปรับให้เหมาะสมนั้นมีการเปลี่ยนแปลงหรือไม่? ตัวอย่างเช่น, (1) วิธีการซิมเพล็กซ์สำหรับการเขียนโปรแกรมเชิงเส้นเชิงคณิตศาสตร์? (2) ส่วนใหญ่ของวิธีการเขียนโปรแกรมที่ไม่เชิงเส้นเช่นการไล่ระดับสีวิธีการคูณลากรองจ์วิธีการลงโทษวิธีการจุดมหาดไทย (วิธีการอุปสรรค), เกี่ยวกับการเปลี่ยนแปลง (3) วิธีการไล่ระดับสีฟรีทั้งหมดเช่นวิธี Nelder – Mead หรือวิธีดาวน์ฮิลล์เริมซ์, metaheuristic หรือไม่? วิธีการเพิ่มประสิทธิภาพบางอย่างที่ไม่เกี่ยวกับการเปลี่ยนแปลงคืออะไร? โดยทั่วไป (เกินกว่าการเพิ่มประสิทธิภาพ) สำหรับเทคนิคการแก้ปัญหาจากWikipedia : Heuristicหมายถึงประสบการณ์ที่ใช้เทคนิคในการแก้ปัญหาการเรียนรู้และการค้นพบ ในกรณีที่การค้นหาไม่ได้ผลจะใช้วิธีการแก้ปัญหาเพื่อเร่งกระบวนการค้นหาวิธีแก้ไขปัญหาที่น่าพอใจ ตัวอย่างของวิธีการนี้รวมถึงการใช้กฎง่ายๆการเดาที่มีการศึกษาการตัดสินใจแบบหยั่งรู้หรือสามัญสำนึก ในแง่ที่แม่นยำยิ่งขึ้นฮิวริสติกเป็นกลยุทธ์ที่ใช้เข้าถึงได้ง่ายแม้ว่าจะใช้งานได้อย่างหลวม ๆ ข้อมูลในการควบคุมการแก้ปัญหาในมนุษย์และเครื่องจักร ฉันสงสัยว่าจะเข้าใจความหมายของ "ฮิวริสติก" ได้อย่างไร? ฉันจะบอกได้อย่างไรว่า "การแก้ปัญหาการเรียนรู้และการค้นพบ" เป็นวิธีแก้ปัญหาหรือไม่? เทคนิค …

3
การคูณเมทริกซ์ MATLAB (วิธีการคำนวณที่ดีที่สุด)
ฉันต้องทำการแปลงพิกัดระหว่างสองระบบอ้างอิง (แกน) ด้วยเหตุนี้จึงต้องทำการคูณเมทริกซ์สามตัว ( ) เนื่องจากแกนกลางบางอันถูกใช้งาน ฉันคิดเกี่ยวกับวิธีการสองวิธีในการแก้ไขปัญหานี้:3×33×33\times3 วิธีที่ # 1 : ทำการคูณโดยตรงนั่นคือ vf=R1 R2 R3 vivf=R1 R2 R3 viv_f = R_1\ R_2\ R_3\ v_i วิธีที่ # 2 : แบ่งออกเป็นขั้นตอน: v3i=R3 viv3i=R3 viv_{3i} = R_3\ v_i v23=R2 v3iv23=R2 v3iv_{23} = R_2\ v_{3i} vf=R1 v23vf=R1 v23v_f = R_1\ v_{23} ที่อยู่: , R …

2
การรวมตัวเลขลำดับที่สูงขึ้นบนสามเหลี่ยม / จัตุรมุข / Simplex
ให้เป็นรูปสามเหลี่ยมและให้เป็นฟังก์ชันเรียบบนTTTTฉฉfTTT เราสามารถใช้จุดกลางพื้นที่สี่เหลี่ยมจัตุรัสที่เป็นจุดกลางของT∫ฉdx ≈ | T| ⋅f( xM)∫ฉdx≈|T|⋅ฉ(xM)\int f dx \approx |T|\cdot f(x_M)xMxMx_MTTT คุณสามารถให้ (อ้างอิงสำหรับ) สูตรการสั่งซื้อที่สูงขึ้นใน simplex ได้หรือไม่?
10 quadrature 

2
การคำนวณสัมประสิทธิ์ลากรองจ์สำหรับ SVM ใน Python
ฉันกำลังพยายามเขียนการใช้งานSVMแบบเต็มใน Python และฉันมีปัญหาเล็กน้อยในการคำนวณสัมประสิทธิ์ลากรองจ์ ก่อนอื่นให้ฉันใช้ถ้อยคำใหม่สิ่งที่ฉันเข้าใจจากอัลกอริทึมเพื่อให้แน่ใจว่าฉันอยู่บนเส้นทางที่ถูกต้อง ถ้าx1, x2, . . . , xnx1,x2,...,xnx_1, x_2, ..., x_nเป็นชุดข้อมูลและYผม∈ { - 1 , 1 }yi∈{−1,1}y_i \in \{-1, 1\}เป็นคลาสป้ายกำกับของxผมxix_iจากนั้น∀ i , yผม( ด้วยTxผม+ b ) ≥ 1∀i,yi(wTxi+b)≥1\forall i, y_i(w^Tx_i + b) \geq 1 ดังนั้นเราเพียงแค่ต้องแก้ปัญหาการเพิ่มประสิทธิภาพให้ ∥ w ∥2‖w‖2\|w\|^2 ขึ้นอยู่กับYผม( ด้วยTxผม+ b ) ≥ 1yi(wTxi+b)≥1y_i(w^Tx_i + b) \geq …

2
จับคู่รายการที่คล้ายกันจากชุด
ฉันพยายามจับคู่สิ่งของ เมื่อได้ชุดของรายการฉันสามารถจัดอันดับจากระดับ 0 ถึง 100 ของความคล้ายคลึงกัน ตัวอย่างเช่นหากรายการเป็นนมและรายการเป็นนมเช่นกันความคล้ายคลึงกันระหว่างและจะเท่ากับ 100% ถ้าเป็นโซดาความคล้ายคลึงกันระหว่างและก็อาจจะเป็น 80% และอื่น ๆnnnn1n1n_1n2n2n_2n1n1n_1n2n2n_2n3n3n_3n1n1n_1n3n3n_3 ฉันกำลังพยายามหาวิธีจัดกลุ่มรายการเป็นกลุ่มของรายการที่คล้ายกัน แต่มันเป็นปัญหาที่ท้าทาย ฉันพบปัญหาต่อไปนี้: ม้าคล้ายกับวัวซึ่งคล้ายกับแพะซึ่งคล้ายกันในส่วนของชีสแพะซึ่งคล้ายกับชีสซึ่งมีความสัมพันธ์กับแครกเกอร์ อย่างไรก็ตามฉันไม่คิดว่าม้าจะอยู่ในกลุ่มเดียวกับแคร็กเกอร์ แต่ละรายการอาจมีความสัมพันธ์คู่กัน แต่จุดเริ่มต้นและจุดสิ้นสุดอาจไม่ใช่nnn ความคิดใด ๆ

1
วิธีการหาค่าลักษณะเฉพาะภายในโดยวิธี kspace พื้นที่ย่อย?
ฉันสงสัยว่าจะหาค่าลักษณะเฉพาะของเมทริกซ์กระจัดกระจายในช่วงเวลาที่กำหนด [a, b] โดยวิธีการวนซ้ำได้อย่างไร เพื่อความเข้าใจส่วนบุคคลของฉันมันชัดเจนมากขึ้นที่จะใช้วิธีการ subspace ของ Krylov เพื่อค้นหาค่าลักษณะเฉพาะที่รุนแรงแทนที่จะเป็นค่าตกแต่งภายใน

1
ฉันจะกำหนดค่าเริ่มต้นของตัวสร้างตัวเลขสุ่มหลอกได้หากมีการให้ลำดับหรือไม่
สมมติว่าฉันรู้ว่าหมายเลขลำดับสุ่มถูกสร้างขึ้นโดยเครื่องกำเนิดเชิงเส้นเชิงเส้นตรง นั่นคือ, xn+1=(aXn+c)modmxn+1=(aXn+c)modmx_{n+1}=(aX_n+c) \bmod m หากฉันได้รับตลอดช่วงเวลา (หรืออย่างน้อยก็มีองค์ประกอบที่ต่อเนื่องกันจำนวนมาก) ฉันจะสร้างพารามิเตอร์a,c,ma,c,ma,c,mและx0x0x_0ที่สร้างลำดับนี้ได้อย่างไร ฉันกำลังมองหาวิธีการทั่วไปที่จะสามารถกำหนดพารามิเตอร์เริ่มต้นได้หากรู้จักตัวสร้างตัวเลขแบบหลอกเทียม

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