您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中写一个双和

5b51 2022/1/14 8:23:48 python 字数 2636 阅读 609 来源 www.jb51.cc/python

我是StackOverflow的新手,我对Python非常陌生.我的问题是这个......我需要写一个双和,如下:动机是这是对用于大地水准面的重力势的角度修正.>我写这笔钱很困难.并且,在你说“去这样一个这样的资源”或者对我不耐烦之前,这是我第一次完成编码/编程/不管这是什么.>这是一个使用“for”循环的好地方吗?>我有两个索引(n,m)

概述

我是StackOverflow的新手,我对Python非常陌生.

我的问题是这个……我需要写一个双和,如下:

动机是这是对用于大地水准面的重力势的角度修正.

>我写这笔钱很困难.并且,在你说“去这样一个这样的资源”或者对我不耐烦之前,这是我第一次完成编码/编程/不管这是什么.
>这是一个使用“for”循环的好地方吗?
>我有两个索引(n,m)的数据以及.txt文件中的系数c_ {nm}和s_ {nm}的数据.每个项目都是一列.当我说usecols时,我会将它们编号为0到3,还是1到4?

(上面的等式)

\begin{equation}
V(r,\phi,\lambda) = \sum_{n=2}^{360}\left(\frac{a}{r}\right)^{n}\sum_{m=0}^{n}\left[c_{nm}*\cos{(m\lambda)} + s_{nm}*\sin{(m\lambda)}\right]*\sqrt{\frac{(n-m)!}{(n+m)!}(2n + 1)(2 - \delta_{m0})}P_{nm}(\sin{\lambda})
\end{equation}

(3)正如@askewchan所说,“usecols”是指genfromtxt的参数;如该文档中所指定,列索引从0开始,因此您将要使用0到3.

一个天真的实现可能是好的,因为较大的阶乘是分母,但如果遇到数字问题我不会感到惊讶.这是让你入门的东西.请注意,您需要定义P()和a.我不明白“0到3”是如何与c和s相关的,因为它们的索引范围更远.我将假设每个(和delta)都有自己的值文件.

import math
import numpy
c = numpy.getfromtxt("the_c_file.txt")
s = numpy.getfromtxt("the_s_file.txt")
delta = numpy.getfromtxt("the_delta_file.txt")
def V(r,phi,lam):
  ret = 0
  for n in xrange(2,361):
    for m in xrange(0,n + 1):
      inner = c[n,m]*math.cos(m*lam) + s[n,m]*math.sin(m*lam)
      inner *= math.sqrt(math.factorial(n-m)/math.factorial(n+m)*(2*n+1)*(2-delta[m,0]))
      inner *= P(n,m,math.sin(lam))
    ret += math.pow(a/r,n) * inner
  return ret

一定要写unittests来检查数学.请注意,“lambda”是保留字.

总结

以上是编程之家为你收集整理的在Python中写一个双和全部内容,希望文章能够帮你解决在Python中写一个双和所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶