我已经离开了造型业,可以说,现在已经有一段时间了.当我在大学时,我使用的大多数模型都是用FORTRAN编写的,我从来不喜欢它.我正在寻求回归科学,所以我想知道是否有适合这种应用的功能集的现代语言.你认为什么是模拟复杂物理系统的最佳语言?
我想在三维空间中模拟一些具有吸收和反射的传播波.我想用python做.我应该使用numpy吗?我应该使用一些特殊的库吗?
我该如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思怎么办?有更好的方法吗?我应该用矢量吗?但是当光线发散时,强度会降低.难.
提前致谢.
我将在接下来的几个月里提出很多问题.对于我的九年级科学博览会项目,我想创建一个交通模拟器,以测试互连的交通信号灯是否可以增加交通流量.我有几个通用的问题,我需要帮助...
我不是在寻找具体的代码,只是很好的指针和资源来帮助我开始.任何帮助表示赞赏,C.Ruhl.
PS我只是在高中所以没有高级数学符号请:)
我正在考虑使用Kotlin进行仿真框架,并注意到编译器为每个可以从java访问的方法交织静态checkParameterIsNotNull调用.每次运行此方法时,通过访问(并转储?)调用堆栈,检查方法参数是否为空.现在在典型的模拟框架中,运行次数可能达到数百万,我想知道这种功能对性能的影响.
如果可以选择将其关闭?
这种流体模拟基于Stam的论文.在第7页,他描述了平流背后的基本思想:
从两个网格开始:一个包含上一个时间步长的密度值,另一个包含新值.对于后者的每个网格单元,我们通过速度场向后追踪单元的中心位置.然后,我们从先前密度值的网格线性插值,并将此值分配给当前网格单元格.
Advect代码.两个密度网格是d和d0,u并且v是速度分量,dt是时间步长,N(全局)是网格大小,b可以忽略:
void advect(int b, vfloat &d, const vfloat &d0, const vfloat &u, const vfloat &v, float dt, std::vector<bool> &bound)
{
float dt0 = dt*N;
for (int i=1; i<=N; i++)
{
for (int j=1; j<=N; j++)
{
float x = i - dt0*u[IX(i,j)];
float y = j - dt0*v[IX(i,j)];
if (x<0.5) x=0.5; if (x>N+0.5) x=N+0.5;
int i0=(int)x; int i1=i0+1;
if (y<0.5) …Run Code Online (Sandbox Code Playgroud) 我正在 MATLAB 中重写一个 Monte Carlo 仿真模型,重点是可读性。该模型涉及许多粒子,表示为 (x,y,z),它们在具有特定终止概率的一小组状态上随机游走。与输出相关的信息是在给定状态终止的粒子数。
模拟需要足够的粒子,单独为每个粒子运行它的成本高得令人望而却步。矢量化似乎是从 MATLAB 中获得性能的方法,但是有没有任何惯用的方法可以在 MATLAB 中创建此仿真的矢量化版本?
我正在用头撞墙来完成这个 - 我什至尝试创建一个 (nStates x nParticles) 矩阵来表示每个粒子状态组合,但是这种方法在可读性方面很快就会失控,因为粒子从状态反弹相互独立地陈述。我应该硬着头皮改用更适合这个的语言吗?
首先,我没有想到这一点.
我想知道如何在iPhone上的一些沙丘上进行简单的瀑布模拟.
原来,几个人解决问题流水,和GameDev已经接近了主意几个倍.然而,所有这些解决方案似乎都是计算密集型的(并且它是有道理的,因为水是流体并且流体力学很复杂).我感兴趣的快捷方式,因为它并不真正重要的模拟是准确的,但只是它似乎是准确的.
有人询问使用1500粒子在DirectX上使用(Navier-)Stokes进行模拟.他说他的结果是锯齿状的.当然,在iPhone上它将是一个OpenGL ES实现这样的东西.
另一个好的灵魂尝试使用Chipmunk的物理引擎,但听起来像使用战斗机来杀死蚊子,它仍然带来了许多很多粒子的问题.所以我现在想知道使用类似于这种压力管理技术的技术是否合理 ,以便管理流体的宏观状态,并用粒子管理边缘,以便最小化总计算.
如果您有好主意,请提出建议.
编辑08/06/2015:我在Thimbleweed Park博客中找到了这个由Joseph Huckaby 在HTML5中完成的非常古老技术的典范.它只是在情况上是相关的,因为它完全是关于物理的外观,而不是关于物理,但为什么不大致模拟流体,并用调色板循环效果覆盖"液体区域"?当然,由于该技术更多地依赖于艺术元素,因此它在艺术家领域中移动了难度.然而,渲染代码在混合时有点密集.
是否有替代方法可以为物理模拟制作教育Java小程序,如弹丸运动,重力等?
我创建了一个2D迷宫,我想找到红色 - 蓝色节点之间最快的路径.我不确定如何实施深度优先搜索.我知道可以使用邻接矩阵或列表来表示节点之间的连接.虽然,我不确定如何构建它.
为简洁起见:我需要返回一个列表,其中搜索了瓷砖坐标(当寻找目标节点时),因此我可以在迷宫上描绘搜索.或者我将如何为此构建一个邻接矩阵?和相应的顶点列表?
深度首先搜索一般结构
重复1 - 3直到堆栈为空
这是迷宫类的当前代码.
public class Maze {
//Tile ids
public static short OBSTICLE = 0;
public static short START_LOC_VALUE = -2;
public static short GOAL_LOC_VALUE = -3;
private int rows, cols;
private int numTiles;
private int[][] map;
private int[][] adjMatrix;
private Queue theQueue;
public Maze(int rows, int cols){
this.rows = rows;
this.cols = cols;
theQueue = new Queue();
numTiles = rows*cols;
map = new int[rows][cols];
adjMatrix …Run Code Online (Sandbox Code Playgroud) 概述:
我有一个由3D多边形网格表示的简单塑料沙箱.我需要能够在将特定量的水倒入沙箱后确定水位.
问题:
我可以使用哪种技术/算法来解决这个问题?

我不是在寻找能够做到这一点的程序或类似程序,只是算法 - 我会做实现.
simulation ×10
physics ×3
algorithm ×2
java ×2
python ×2
3d ×1
c++ ×1
geometry ×1
iphone ×1
javascript ×1
kotlin ×1
matlab ×1
modeling ×1
montecarlo ×1
numpy ×1
performance ×1
simulator ×1
theory ×1
waterfall ×1
wave ×1