Python中文
首页
教程
问答
标签
搜索
登录
注册
我的Python代码计算时间太长了!我能用numpy更快地计算吗?如果是,怎么办?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我打算用Verlet算法计算行星运动。在</p> <p>问题是,代码执行一个完整的周期大约需要30分钟。这是基本的计算,所以我不知道为什么要花这么长时间。在</p> <p>我在这里读了一点,使用<strong><code>numpy</code></strong>应该更快,对吧?在</p> <p>但是我如何实现它呢?而且,它应该绕一整圈,停在<code>0</code>(或者{<cd3>},如果计算行驶距离的话),但它根本没有停止,只是继续,有人能看出为什么我的极限不起作用了吗?</strong></p> <p>我的代码是:</p> <pre><code>grav = 6.673481*(10**-11) # = 6.673481e-11 # a direct way m_sun = 1.989*(10**30) # = 1.989e+30 m_earth = 5.972*(10**24) # = 5.972e+24 r_earth = 149.59787*(10**9) # = 1.4959787e+11 def verlet_v( prev_v, prev_f, mass ): current_v = ( prev_v + ( prev_f / mass ) ) print "New Velocity: %f" % current_v return current_v def verlet_x( prev_x, current_v ): current_x = prev_x + current_v print "New Position: %f" % current_x return current_x verlet_v( 20, 50, 3 ) v = 29.8*(10**3) # = 2.98e+04 x = 0 f = ( -grav * ( ( m_earth * m_sun ) / r_earth**2 ) ) v_history = [] x_history = [] while( abs(x) > ( -0.1 ) ): # ABS( <_anything_> ) is ALWAYS > -0.1 print "Mod(x): %f" % abs(x) print "Limit: %f" % (0) v = verlet_v( v, f, m_earth ) x = verlet_x( x, v ) v_history.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(v) x_history.append(x) print v_history print x_history </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你好像陷入了一个无限循环。在</p> <p><code>abs(x)</code>给出一个数的绝对值,它总是正的。这意味着它永远不会低于<code>-0.1</code>,因此while循环永远不会结束。在</p> <p>您需要将<code>abs(x)</code>或{<cd2>}更改为其他内容。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
尽管Python中的所有内容都是引用,为什么Python导师在没有指针的列表中绘制字符串和整数?
5 回答
尽管python中的表达式为false,但循环仍在运行
2 回答
尽管python代码正确,但从nifi ExecuteScript处理器获取语法错误
3 回答
尽管Python在Neovim中工作得很好,但插件不能识别Neovim中的Python主机
4 回答
尽管python字典包含了大量的条目,但它并没有增长
2 回答
尽管python说模块存在,为什么我会得到这个消息?
3 回答
尽管setuptools和控制盘是最新的,但无法识别singleversionexternallymanaged
10 回答
尽管stdout和stderr重定向,但未捕获错误消息
9 回答
尽管Tensorboard的事件太大,但Tensorboard的步骤太少了
3 回答
尽管tkinter上的变量已更改,但显示未更改
6 回答
尽管try/except使用Python进行单元测试时出现断言错误
1 回答
尽管URL是sam,但仍会抛出“达到最大重定向”
8 回答
尽管url有效,Pandas仍读取url的\u csv错误
1 回答
尽管while中存在时间延迟,但LINUX线程的CPU利用率为100%(1)
2 回答
尽管x0在范围内,Scipy优化仍会引发ValueError
9 回答
尽管xpath正确,但使用selenium单击链接仍不起作用
1 回答
尽管下载了ffmpeg并设置了路径变量python,但没有后端错误
6 回答
尽管下载了i,但找不到型号“fr”
9 回答
尽管下载了plotnine包,但未获取名为“plotnine”的模块时出错
6 回答
尽管为所有行指定了权重,网格(0)仍不起作用
6 回答