我对其中一个新功能有一些问题,它是fromIntegral函数.
基本上我需要接受两个Int参数并返回数字的百分比,但是当我运行我的代码时,它一直给我这个错误:
码:
percent :: Int -> Int -> Float
percent x y = 100 * ( a `div` b )
where a = fromIntegral x :: Float
b = fromIntegral y :: Float
Run Code Online (Sandbox Code Playgroud)
错误:
No instance for (Integral Float)
arising from a use of `div'
Possible fix: add an instance declaration for (Integral Float)
In the second argument of `(*)', namely `(a `div` b)'
In the expression: 100 * (a `div` b)
In an equation for `percent':
percent x …Run Code Online (Sandbox Code Playgroud) 我最近开始使用Matlab,我试图绘制Imaginary函数的一部分.我可以看到我在某个地方犯了一个错误,因为我有图表显示我需要得到什么,而我正在得到别的东西.这是我需要得到的图表的链接,我得到的和我正在绘制的函数:

我知道这个函数在270 Hz左右的频率上有一个奇点,我不知道'quadgk'是否能解决积分.你们可能知道但是积分里面的θ功能是一个重量级的,我不知道这是否会导致问题?我在这里做错了吗?这是我写的matlab代码:
clear all
clc
ff=1:10:1000;
K1=(2*3)*log(2*cosh(135/6))/pi;
theta1=ones(size(ff));
theta1(ff<270)=0;
I1=zeros(size(ff));
for n = 1:numel(ff)
f = ff(n);
I1(n)= K1/f + (f/pi)*quadgk(@(x)(sinh(x/3)/(cosh(135/3)+cosh(x/3))-theta1(n))./((f^2)-4*(x.^2)), 0, inf);
end
plot(ff,I1, 'b');
hold on
axis([0 1000 -0.3 1])
Run Code Online (Sandbox Code Playgroud) 根据http://en.cppreference.com/w/cpp/language/reinterpret_cast,已知reinterpret_cast指向具有足够大小和返回的积分的指针产生相同的值.我想知道标准是否也符合反过来.也就是说,reinterpret_cast一个足够大小的指针类型的积分是否会产生相同的值?
在尝试评估Python中的定积分时,我收到以下错误代码.
AttributeError Traceback (most recent call last)
<ipython-input-7-2be8718c68ec> in <module>()
7 x, n = symbols('x n')
8
----> 9 f = (cos(n*x))*(x**2-pi**2)^2
10 integrate(f,(x,-n*pi,n*pi))
11
AttributeError: 'Mul' object has no attribute 'cos'
Run Code Online (Sandbox Code Playgroud)
我已经复制了下面的输入代码.谢谢你的帮助.
from pylab import *
from sympy import *
from numpy import *
init_printing(use_unicode=False, wrap_line=False, no_global=True)
x, n = symbols('x n')
f = (cos(n*x))*(x**2-pi**2)^2
integrate(f,(x,-n*pi,n*pi))
Run Code Online (Sandbox Code Playgroud) 我想在R中解决以下问题:
∫ 0 ħ [π(吨)∫ 吨ħ 甲(X)DX] dt的
其中π(t)是先验,A(x)是下面定义的A函数.
prior <- function(t) dbeta(t, 1, 24)
A <- function(x) dbeta(x, 1, 4)
expected_loss <- function(H){
integrand <- function(t) prior(t) * integrate(A, lower = t, upper = H)$value
loss <- integrate(integrand, lower = 0, upper = H)$value
return(loss)
}
Run Code Online (Sandbox Code Playgroud)
由于π(t),A(x)> 0,expected_loss(.5)应小于expected_loss(1).但这不是我得到的:
> expected_loss(.5)
[1] 0.2380371
> expected_loss(1)
[1] 0.0625
Run Code Online (Sandbox Code Playgroud)
我不确定我做错了什么.
我想对等式进行积分:
f(x) = 积分(E^(-i * omega * t)),从
-a到a.
我写了以下代码:
from sympy import *
from sympy.abc import a, omega, t
init_printing(use_unicode=False, wrap_line=False, no_global=True)
f = E**(-I * omega * t)
integrate(f, (omega, -a, a))
Run Code Online (Sandbox Code Playgroud)
但结果只是输入的定积分。当我改变整体限制0到I得到结果......没有人知道如何从得到一个解决方案-a来a?
提前谢谢了。
约翰
在 sympy http://docs.sympy.org/latest/modules/integrals/integrals.html 的文档中,我们可以阅读:
manualintegrate 模块具有返回所使用步骤的函数(有关更多信息,请参阅模块文档字符串)。
但是调用help(sympy.integrals.manualintegrate)我们得到:
Help on function manualintegrate in module sympy.integrals.manualintegrate:
manualintegrate(f, var)
manualintegrate(f, var)
Compute indefinite integral of a single variable using an algorithm that
resembles what a student would do by hand.
Unlike ``integrate``, var can only be a single symbol.
Examples
========
>>> from sympy import sin, cos, tan, exp, log, integrate
>>> from sympy.integrals.manualintegrate import manualintegrate
>>> from sympy.abc import x
>>> manualintegrate(1 / x, x)
log(x)
>>> integrate(1/x)
log(x) …Run Code Online (Sandbox Code Playgroud) 这是一个使用中点规则计算 AUC 的函数。使用 R 如何定义一个包含前一个向量值之间的中点的向量?或者如何将向量的值移至中点?
# define h (or delta x)
h <- (b - a) / n
# define vector based on the limits of integration, a to b by increments of h
xj <- seq.int(a, b, length.out = n + 1
# shift values of vector to their midpoints
Run Code Online (Sandbox Code Playgroud)
例如,将值 [0, 1, 2, 3] 转换为 [.25, 1.5, 2.5]
这个 for 循环有效,但我想知道是否有比这更优雅的解决方案:
for (i in 1:length(xj)) {
xji[i] <- (xj[i] + xj[i + 1]) / 2
}
Run Code Online (Sandbox Code Playgroud) 这是我第一次使用 stackoverflow,所以请耐心等待!我正在使用 R 包“pracma”来计算三重积分。这是我的代码:
mu1=0
mu2=0
mu3=0
mu4=0
sigma1=1
sigma2=1
sigma3=1
sigma4=1
f3=function(x,y,z){dnorm(z,mean = mu2,sd=sigma2)*dnorm(y,mean =
mu3,sd=sigma3)*(1-pnorm(z,mean= mu1,sd=sigma1))*dnorm(x,mean =
mu4,sd=sigma4)}
ymin=function(x){x}
zmin=function(x,y){y}
integral3(f3,xmin = -100,xmax = 100,ymin,ymax=100,zmin,zmax = 100)
Run Code Online (Sandbox Code Playgroud)
但实际上,我收到以下错误:
Error in if (adjerr[1] > localtol) { :
missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)
有人可以给我一个解决这个问题的提示吗?预先感谢
我正在用 Python 编写一个程序来使用自由 ICI 方法求解薛定谔方程(好吧,现在是 SICI 方法......但它会变成自由 ICI)。如果这听起来不熟悉,那是因为关于该主题的信息很少,而且绝对没有示例代码可供使用。
该过程涉及迭代地得出偏微分方程的解。在这样做时,需要执行许多符号导数。问题是,随着程序运行,需要微分的函数会越来越大,以至于到第五次迭代时,计算符号导数需要大量时间。
我需要加快速度,因为我希望能够实现至少 30 次迭代,而且我希望在我退休之前做到这一点。
我已经完成并删除了不必要的重复计算(或者至少是我所知道的那些),这有很大帮助。除此之外,我完全不知道如何加快速度。
这是包含计算导数的inf_integrate函数的代码(该函数只是复合辛普森的方法,因为它比使用 SymPy 的方法快得多integrate,并且不会因振荡函数而引发错误):
from sympy import *
def inf_integrate(fun, n, a, b):
f = lambdify(r, fun)
h = (b-a)/n
XI0 = f(a) + f(b)
XI1 = 0
XI2 = 0
for i in range(1, n):
X = a + i*h
if i % 2 == 0:
XI2 = XI2 + f(X)
else:
XI1 = XI1 + f(X)
XI = h*(XI0 + 2*XI2 + …Run Code Online (Sandbox Code Playgroud)