在Peter Norvig的用Python ()编写的Lisp解释器中,他将Lisp的eval定义为:
def eval(x, env=global_env):
"Evaluate an expression in an environment."
if isa(x, Symbol): # variable reference
return env.find(x)[x]
elif not isa(x, list): # constant literal
return x
我在这里看了几个这样的问题,但我找不到解决这个问题的办法:
我用fourier_transform(exp(-tau*abs(t)), t, w)计算了一个渐近的傅里叶变换。我给tau、t和w分配了tau, t, w = symbols('tau t w')。我如何将FT的结果转化为一个函数,例如
g(tau, w) = fourier_transform(exp(-tau*abs(t)), t, w)
?当我这样写它时,我会得到错误can't assign to function call。当我这样做的时候
g = fourier_transform(exp(-tau
我试图在Python中对一个复数矩阵求幂,但遇到了一些麻烦。我正在使用scipy.linalg.expm函数,当我尝试以下代码时,收到了一条相当奇怪的错误消息:
import numpy as np
from scipy import linalg
hamiltonian = np.mat('[1,0,0,0;0,-1,0,0;0,0,-1,0;0,0,0,1]')
# This works
t_list = np.linspace(0,1,10)
unitary = [linalg.expm(-(1j)*t*hamiltonian) for t in t_list]
#
我目前正在尝试编写一个OCaml函数,该函数将计算表达式并返回一个布尔值。我试着在网上做研究,我能找到的最接近的答案是。然而,我仍然有困难,这导致我问我自己的问题。
以下是基本代码:
type equation =
| True
| False
| Equal of exp * exp
and exp =
| Val of int
| Add of exp * exp
| Sub of exp * exp
let rec eval : equation -> bool
= fun f ->
match f with
| True -> tru
因此,我正在尝试用Python实现一个模块化算术快速增强算法,但我似乎遇到了严重的瓶颈。因此,根据我的理解,你应该找到指数的二进制表示,并计算基数^2^i的乘积,其中i是二进制数字的数量。我的python代码是通常在网上和教科书中看到的算法定义的实现:
def fastPower(base, exp, mod):
base %= mod
workingExp = exp
product = 1
upperBound = range(int(math.ceil(math.log(exp,2))))
for i
我试图求和一个函数,然后试图找到所述函数的根。例如,以以下为例:
假设我有一个矩阵,X和向量,t,值: X(2*n+1,n+1),t(n+1)
for j = 1:n+1
sum = 0;
for i = 1:2*j+1
f = @(g)exp[-exp[X(i,j)+g]*(t(j+1)-t(j))];
sum = sum + f;
end
fzero(sum,0)
end
那是,
我想评估一下
J=1
f = @(g)exp[-exp[X(1,1)+g]*(t(j+1)-t(j))]
fzero(f,0)
J=
我有一个函数,其中我试图计算定积分。但是,这个函数的一部分在其中使用了一个映射函数,我得到了一个TypeError: only size-1 arrays can be converted to Python scalars。
这是我的功能:
from scipy import integrate
import numpy as np
def func(a, b, c, d): #a is an array of 4000 elements, b is an array of ten elements, c&d are integers
n = len(a)
aver
我在准备考试之前所做的一项作业是我创造的。
data Exp = T | F | And Exp Exp | Or Exp Exp | Not Exp deriving (Eq, Show, Ord, Read)
然后它要求
folde :: a -> a -> (a -> a -> a) -> (a -> a -> a) -> (a -> a) -> Exp -> a
这就是我想出来的
folde :: a -> a -> (a -> a -> a) -> (a -> a -> a)
下面的函数适用于小的正指数和基函数。如果指数很大,那么内存就不够了,程序应该终止。相反,如果对大指数调用该函数,那么0是returned.Why吗?一种猜测是,出现了带零的乘法,但没有这样的情况。
返回零的一个例子是power(2,64)。
unsigned long long int power(unsigned long long int base,int exp){
if (exp == 0 && base != 0)
return 1;
return base*power(base,exp-1);
}
我目前正在编写一个C++程序来查找Mersenne素数,使用MSWin8.1上的ttmath。我已经写了卢卡斯-莱默算法,但无论我尝试什么值,我总是得到一个没有默森号的信息。有人能指出我的Lucas-Lehmer算法的错误吗?
void LLIteration::calculate()
{
ttmath::UInt<100> num = 2;
ttmath::UInt<100> s = 4;
(num.Pow(this->exp));
num = num-1;
for(int i = 3; i < exp; ++i)
我有以下问题:我有许多值x,我需要计算x^e (e是euler数)。我这样做:
$x = $x ** exp(1);
这将为我的所有测试用例生成"nan“。
但是,如果我在执行此操作之前打印$x的值,然后取一个值并将上面的行更改为:
$x = -12.4061063212051 ** exp(1);
它会产生非常好的数字。
有人能指出我在这里做错了什么吗?
谢谢
PS:也许错误隐藏在其他地方,所以下面是我如何计算$x的:
$y = #some float value taken from the output string of another program
$x = ($y/(30
下面是我正在讨论的问题
我的代码将被正确编译和运行。我猜计算就是它搞砸的地方。它告诉我633行是最大的(项目euler说这是错误的)。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int poww(int base, int exp);
int main()
{
//ignore messy/unused variables. I am desperate
int lineNumber = 0;
string line
当我这样做的时候:
REAL FUNCTION f(x)
REAL, INTENT(IN) :: x
f = exp(-x)
END FUNCTION f
它可以工作,但如果我这样做了:
REAL FUNCTION f(x)
REAL, INTENT(IN) :: x
f = exp(-x^2)
END FUNCTION f
我得到一个错误:
Error: Syntax error in argument list at (1)
但是我需要x^2函数,而不是x。该
好的,所以我一直在试图编码一个“朴素”的方法来计算一个标准的傅里叶级数的系数的复数形式。我想,我已经很接近了,但也有一些奇怪的行为。这可能更像是一道数学题,而不是编程问题,但我在 on math.stackexchange上得到了零答案。这是我的工作代码:
import matplotlib.pyplot as plt
import numpy as np
def coefficients(fn, dx, m, L):
"""
Calculate the complex form fourier series coefficients for the
我有一个关于在python的sympy.solvers中解决多项式的小问题。我想要的是找到有理根,而不是无理根。我的尝试如下所示- from sympy.solvers import solve
from sympy import Symbol
from fractions import Fraction
b_2=0
b_4= -10
b_6=32
b_8=-25
x_2p=-7/4
x = Symbol('x', real=True)
solution=solve(((4*x**3+b_2*x**2+2*b_4*x+b_6)*x_2p-(x**4-b_4*x**2-2