我有一些代码使用了修改后的第一和第二阶贝塞尔函数(iv和kv).令人讨厌的是,他们似乎有限制,那些是iv(0,713)和kv(0,697),每个加一个,你得到无穷大和0.这对我来说是个问题,因为我需要使用高于此值的值,通常高达2000或更高.当我试图除以这些时,我最终潜水0或无穷大,这意味着我要么得到错误或零,这两者都不是我想要的.
我正在使用scipy bessel函数,是否有更好的函数可以处理更小和更大的数字,或者修改Python以使用这些大数字的方法.我不确定这里真正的问题是为什么Python不能超过700这些工作,是函数还是Python?
我不知道Python是否已经在做,但我只需要前5-10位*10 ^ x,例如; 也就是说我不需要全部1000位数,也许这就是与Wolfram Alpha如何解决这个问题相比,Python的工作原理是什么?
我试图在MATLAB中计算第二类修改贝塞尔函数的对数,即类似的东西:
log(besselk(nu, Z))
Run Code Online (Sandbox Code Playgroud)
例如
nu = 750;
Z = 1;
Run Code Online (Sandbox Code Playgroud)
我有一个问题,因为价值log(besselk(nu, Z))变为无穷大,因为besselk(nu, Z)是无穷大.但是,log(besselk(nu, Z)) 确实应该很小.
我想写点像
f = double(sym('ln(besselk(double(nu), double(Z)))'));
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
在MuPAD命令中使用mupadmex时出错:DOUBLE无法将输入表达式转换为double数组.如果输入表达式包含符号变量,请改用VPA函数.
sym/double中的错误(第514行)Xstr = mupadmex('symobj :: double',Ss,0)`;
我怎样才能避免这个错误?
我注意到scipy.specialn阶和参数x的Bessel函数在x中jv(n,x)被矢量化:
In [14]: import scipy.special as sp
In [16]: sp.jv(1, range(3)) # n=1, [x=0,1,2]
Out[16]: array([ 0., 0.44005059, 0.57672481])
但是没有相应的矢量化形式的球形贝塞尔函数,sp.sph_jn:
In [19]: sp.sph_jn(1,range(3))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-19-ea59d2f45497> in <module>()
----> 1 sp.sph_jn(1,range(3)) #n=1, 3 value array
/home/glue/anaconda/envs/fibersim/lib/python2.7/site-packages/scipy/special/basic.pyc in sph_jn(n, z)
262 """
263 if not (isscalar(n) and isscalar(z)):
--> 264 raise ValueError("arguments must be scalars.")
265 if (n != floor(n)) or (n < 0):
266 raise ValueError("n must be a …Run Code Online (Sandbox Code Playgroud) 我尝试使用该公式实现bessel函数,这是代码:
function result=Bessel(num);
if num==0
result=bessel(0,1);
elseif num==1
result=bessel(1,1);
else
result=2*(num-1)*Bessel(num-1)-Bessel(num-2);
end;
Run Code Online (Sandbox Code Playgroud)
但是如果我使用MATLAB的bessel函数将它与这个函数进行比较,我会得到太高的不同值.例如,如果我键入贝塞尔(20)它给我3.1689e + 005作为结果,如果我输入bessel(20,1)它给我3.8735e-025,一个完全不同的结果.
你能告诉我一种快速准确的方法来计算 BesselK(mu,z)、BesselI(mu,z),其中 mu 是实数吗?
我注意到标准Go库(Y0)中定义了一阶,二阶和N阶贝塞尔函数(Y0,Y1,Yn)的函数.我似乎无法确定这些数学函数的实际应用,这些函数会使它们如此重要以至于包含在标准库中.
有人可以帮我吗?似乎贝塞尔斯(我之前没有听说过)与描述二次曲线的[渐变?]形状有关,但我不确定为什么这对于一般发展具有特殊的意义.
在MATLAB中你如何绘制
f(r)= {2*J1(a*r)/ r} ^ 2
其中a = 2*pi,J1是第一类贝塞尔函数,r = sqrt(x ^ 2 + y ^ 2)
这应该用3D绘制,即有点像泡泡(不知道怎么做)
我正在寻找一个与 Excel 函数 BESELI 相匹配的 Java 贝塞尔函数,提供了描述:
返回修改后的 Bessel 函数,它等效于为纯虚参数计算的 Bessel 函数。
语法 BESELI(x,n)
X 是评估函数的值。
N 是贝塞尔函数的阶数。如果 n 不是整数,则将其截断。
我发现了一些看起来很接近的东西,但是有许多不同类型的贝塞尔函数......
我的另一个选择是尝试得出一个近似值,但这听起来很困难。任何人都可以就如何在 Java 中表示该 excel 函数给我任何好的建议吗?
为这个问题的简单而道歉.
我想在Python中实现一个方程式.在该等式中,K_0是零阶修正贝塞尔函数.
在Python中实现K_0的最佳方法是什么?
在2.7中学习pythonic.有没有办法避免显式循环?回答=[5, 4, 4, 3, 3, 2]
import numpy as np
import scipy.special as spe
nmax = 5 # n = 0, 1 ...5
mmax = 7 # m = 1, 2 ...7
big = 15.
z = np.zeros((nmax+1, mmax))
for i in range(nmax+1):
z[i] = spe.jn_zeros(i, mmax)
answer = [np.max(np.where(z[i]<big))+1 for i in range(nmax+1)]
print answer # list of the largest m for each n where the mth zero of Jn < big
Run Code Online (Sandbox Code Playgroud) 我试图对由几个贝塞尔函数(第一类和第二类)组成的实值被积函数进行数值评估。被积函数正在振荡和衰减,需要在 0 和 +? 之间进行评估。到目前为止,我尝试使用 scipy.integrate 子包(quad 和 fixed_quad)都没有成功。评估值在实际上应该是平滑的时候跳来跳去。对于某些参数值集,我还会收到警告:“IntegrationWarning:积分可能发散,或缓慢收敛。” (已知收敛)或“IntegrationWarning:已达到最大细分数 (50)”。
等式来自:http : //dx.doi.org/10.1029/WR003i001p00241
它也可以在这里找到:http : //www.aqtesolv.com/papadopu.htm
感谢您在 Python 中对繁琐函数进行数值积分方面的任何帮助...
代码示例
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from scipy import special as sps
import scipy.integrate as integrate
# define constants and variables (SI mks units):
r_w = 0.15
r_c = 0.16
b = 10
S_s = 1E-6
Q = 0.001
S = S_s*b
K=1E-8
T=K*b
alpha = (r_w**2)*S/r_c**2
def r_D(r): …Run Code Online (Sandbox Code Playgroud) 我有一个需要绘制的方程式,并且图表输出不正确.
方程式如下:
情节应如下所示:
但我的代码:
clear; clc; close all;
eta = 376.7303134617706554679; % 120pi
ka = 4;
N = 24;
coeff = (2)/(pi*eta*ka);
Jz = 0;
theta = [0;0.0351015938948580;0.0702031877897160;0.105304781684574;0.140406375579432;0.175507969474290;0.210609563369148;0.245711157264006;0.280812751158864;0.315914345053722;0.351015938948580;0.386117532843438;0.421219126738296;0.456320720633154;0.491422314528012;0.526523908422870;0.561625502317728;0.596727096212586;0.631828690107444;0.666930284002302;0.702031877897160;0.737133471792019;0.772235065686877;0.807336659581734;0.842438253476592;0.877539847371451;0.912641441266309;0.947743035161167;0.982844629056025;1.01794622295088;1.05304781684574;1.08814941074060;1.12325100463546;1.15835259853031;1.19345419242517;1.22855578632003;1.26365738021489;1.29875897410975;1.33386056800460;1.36896216189946;1.40406375579432;1.43916534968918;1.47426694358404;1.50936853747890;1.54447013137375;1.57957172526861;1.61467331916347;1.64977491305833;1.68487650695319;1.71997810084804;1.75507969474290;1.79018128863776;1.82528288253262;1.86038447642748;1.89548607032233;1.93058766421719;1.96568925811205;2.00079085200691;2.03589244590177;2.07099403979662;2.10609563369148;2.14119722758634;2.17629882148120;2.21140041537606;2.24650200927091;2.28160360316577;2.31670519706063;2.35180679095549;2.38690838485035;2.42200997874520;2.45711157264006;2.49221316653492;2.52731476042978;2.56241635432464;2.59751794821949;2.63261954211435;2.66772113600921;2.70282272990407;2.73792432379893;2.77302591769378;2.80812751158864;2.84322910548350;2.87833069937836;2.91343229327322;2.94853388716807;2.98363548106293;3.01873707495779;3.05383866885265;3.08894026274751;3.12404185664236;-3.12404185664236;-3.08894026274751;-3.05383866885265;-3.01873707495779;-2.98363548106293;-2.94853388716807;-2.91343229327322;-2.87833069937836;-2.84322910548350;-2.80812751158864;-2.77302591769378;-2.73792432379893;-2.70282272990407;-2.66772113600921;-2.63261954211435;-2.59751794821949;-2.56241635432464;-2.52731476042978;-2.49221316653492;-2.45711157264006;-2.42200997874520;-2.38690838485035;-2.35180679095549;-2.31670519706063;-2.28160360316577;-2.24650200927091;-2.21140041537605;-2.17629882148120;-2.14119722758634;-2.10609563369148;-2.07099403979662;-2.03589244590177;-2.00079085200691;-1.96568925811205;-1.93058766421719;-1.89548607032233;-1.86038447642748;-1.82528288253262;-1.79018128863776;-1.75507969474290;-1.71997810084804;-1.68487650695319;-1.64977491305833;-1.61467331916347;-1.57957172526861;-1.54447013137375;-1.50936853747890;-1.47426694358404;-1.43916534968918;-1.40406375579432;-1.36896216189946;-1.33386056800461;-1.29875897410975;-1.26365738021489;-1.22855578632003;-1.19345419242517;-1.15835259853032;-1.12325100463546;-1.08814941074060;-1.05304781684574;-1.01794622295088;-0.982844629056025;-0.947743035161167;-0.912641441266309;-0.877539847371451;-0.842438253476592;-0.807336659581735;-0.772235065686877;-0.737133471792019;-0.702031877897161;-0.666930284002303;-0.631828690107445;-0.596727096212586;-0.561625502317728;-0.526523908422871;-0.491422314528013;-0.456320720633154;-0.421219126738296;-0.386117532843439;-0.351015938948581;-0.315914345053722;-0.280812751158864;-0.245711157264007;-0.210609563369149;-0.175507969474290;-0.140406375579432;-0.105304781684575;-0.0702031877897167;-0.0351015938948580;-2.44929359829471e-16];
for n = 0:N
if n == 0
kappa = 1;
else
kappa = 2;
end
num = (-1.^(n)).*(1i.^(n)).*(cos(n.*theta)).*(kappa);
Hankel = besselh(n,2,ka);
Jz = Jz + ((num./Hankel));
end
Jz = Jz.*coeff;
x = linspace(0,2*pi,length(theta));
plot(x,abs(Jz));
Run Code Online (Sandbox Code Playgroud)
注意,θ的值是圆柱体周围的离散角度.该方程是2D中TMz偏振圆柱的电流密度的解析解.
bessel-functions ×12
scipy ×5
matlab ×4
python ×4
math ×3
numpy ×2
algorithm ×1
arrays ×1
excel ×1
go ×1
integral ×1
java ×1
plot ×1
python-2.7 ×1
quad ×1
recurrence ×1
trigonometry ×1