如果我定义一些匿名函数a(x)和b(x)as
a = x -> x^2
b = x -> 2x
Run Code Online (Sandbox Code Playgroud)
在一些循环的持续时间内,将递归问题添加到一起会有所帮助:
for i=1:5
a = x -> a(x) + b(x)
end
Run Code Online (Sandbox Code Playgroud)
其目标是将每个循环迭代内部表示为
a = x -> x^2 + 2x
a = x -> x^2 + 2x + x^2 + 2x
a = x -> x^2 + 2x + x^2 + 2x + x^2 + 2x
...
Run Code Online (Sandbox Code Playgroud)
但是,这会失败并返回一些错误.我假设它是因为调用new a(x)被解释为:a(2) = 2 -> x^2 + x^2 + ... + x^2 + 2x
julia> a(2)
ERROR: …Run Code Online (Sandbox Code Playgroud) 当我今天访问我的 Ubuntu 16.04 服务器并想要删除文件“test2”时,它根本没有被删除!
我用过
rm test2
Run Code Online (Sandbox Code Playgroud)
也
rm -f test2
Run Code Online (Sandbox Code Playgroud)
但它仍然没有删除它,您可以在这里阅读:
root@icinga:~# ls
basket desd.save packages scripts src test2 test5 unused
root@icinga:~# rm test2
root@icinga:~# ls
basket desd.save packages scripts src test2 test5 unused
root@icinga:~# rm -f test2
root@icinga:~# ls
basket desd.save packages scripts src test2 test5 unused
Run Code Online (Sandbox Code Playgroud)
我也尝试过删除其他文件,但没有成功!
我是“test2”的所有者,使用ls -la test2你可以看到我有读写这个文件的权限!
root@icinga:~# ls -la test2
-rw-r--r-- 1 root root 9 Nov 11 20:33 test2
Run Code Online (Sandbox Code Playgroud)
使用which rm它说/bin/rm。
root@icinga:~# which rm
/bin/rm
Run Code Online (Sandbox Code Playgroud)
而且也不\rm …
给定凸包内的一些节点集,假设该域包含一个或多个凹面区域:
其中蓝点是点,黑线表示域.假设点被保持为points长度的2D数组n,其中n是点对的数量.
然后让我们使用类似scipy.spatial的Delaunay方法对点进行三角测量:
如您所见,人们可能会遇到穿过域的三角形的创建.
删除任何跨越域外的三角形的好算法方法是什么?理想但不一定,单面边缘仍然保留域形状(即,没有去除三角形的主要间隙).
由于我的问题似乎继续得到大量的活动,我想跟进我目前正在使用的应用程序.
假设您已定义边界,则可以使用光线投射算法来确定多边形是否在域内.
去做这个:
C_i = (x_i,y_i).L = [C_i,(+inf,y_i)]:也就是说,一条横跨东部超过域末端的线.s_i中的每个边界段S,检查交叉点L.如果是,请向内部计数器添加+1 intersection_count; 否则,什么都不添加.后之间的所有交叉点的数量L和s_i for i=1..N计算:
if intersection_count % 2 == 0:
return True # triangle outside convex hull
else:
return False # triangle inside convex hull
Run Code Online (Sandbox Code Playgroud)如果没有明确定义边界,我发现将形状"映射"到布尔数组并使用邻居跟踪算法来定义它是有帮助的.请注意,此方法假设一个实体域,您需要对其中包含"漏洞"的域使用更复杂的算法.
如何将字符串格式化为具有恒定宽度并左对齐?有Aw格式化程序,其中w表示所需的字符输出宽度,但它会在 if 前面添加空格w > len(characters),而不是附加它们。
当我尝试时
44 format(A15)
print 44, 'Hi Stack Overflow'
Run Code Online (Sandbox Code Playgroud)
我明白了
> Hi Stack Overflow<
Run Code Online (Sandbox Code Playgroud)
代替
>Hi Stack Overflow <
Run Code Online (Sandbox Code Playgroud)
有没有简单的 Fortran 格式化解决方案可以解决这个问题?
我想将 callgrind 的输出重定向到文件名call_grind.txt,但是每当我尝试这样做时,都会生成一个文件,但该文件中没有输出。
例如:
valgrind --tool=callgrind --callgrind-out-file=/tmp/call_grind.txt <program name>
Run Code Online (Sandbox Code Playgroud)
另外,callgrind.out.<pid>我的系统中没有任何文件通常应该位于它的位置。
根据我的理解,如果我运行以下命令,它应该创建callgrind.out.<pid> file:
valgrind --tool=callgrind <program name>
Run Code Online (Sandbox Code Playgroud)
那么,如何使用该工具以及如何读取输出文件?
我正在尝试使用 JuMP 来解决非线性问题,其中变量的数量由用户决定 - 也就是说,在编译时未知。
为了实现这一点,该@NLobjective行如下所示:
@eval @JuMP.NLobjective(m, Min, $(Expr(:call, :myf, [Expr(:ref, :x, i) for i=1:n]...)))
Run Code Online (Sandbox Code Playgroud)
例如,如果n=3,编译器将该行解释为与以下内容相同:
@JuMP.NLobjective(m, Min, myf(x[1], x[2], x[3]))
Run Code Online (Sandbox Code Playgroud)
问题是它@eval仅在全局范围内有效,并且当包含在函数中时,会引发错误。
我的问题是:如何在函数的本地编译范围内完成相同的功能(使用可变数量的参数@NLobjective进行调用)?myfx[1],...,x[n]
def testme(n)
myf(a...) = sum(collect(a).^2)
m = JuMP.Model(solver=Ipopt.IpoptSolver())
JuMP.register(m, :myf, n, myf, autodiff=true)
@JuMP.variable(m, x[1:n] >= 0.5)
@eval @JuMP.NLobjective(m, Min, $(Expr(:call, :myf, [Expr(:ref, :x, i) for i=1:n]...)))
JuMP.solve(m)
end
testme(3)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有下面的 Python 代码,用于从 file 的内容向我的 ID 发送电子邮件filename。我正在尝试发送带有文本颜色格式的电子邮件。
有什么想法请指教。
def ps_Mail():
filename = "/tmp/ps_msg"
f = file(filename)
if os.path.exists(filename) and os.path.getsize(filename) > 0:
mailp = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE)
msg = MIMEMultipart('alternative')
msg['To'] = "karn@abc.com"
msg['Subject'] = "Uhh!! Unsafe rm process Seen"
msg['From'] = "psCheck@abc.com"
msg1 = MIMEText(f.read(), 'text')
msg.attach(msg1)
mailp.communicate(msg.as_string())
ps_Mail()
Run Code Online (Sandbox Code Playgroud) 我正在为程序输入文件编写一个文件解析器,它可以在某种程度上解构为字典:也就是说,在输入文件中,存在包含"键值对"的多级"dicts".
我有一个关键字字典,它告诉read函数要读取哪些键,以及如何解析键值.
例如,您可以在下面的代码摘录中看到,在datum读取时,应该使用函数解析该值HelperFunctions.split_to_floats:
'datum': HelperFunctions.split_to_floats
Run Code Online (Sandbox Code Playgroud)
我想要做的是能够传递参数,这样我就不必为每个可能类型的ie值分隔符进行函数排列.
例如,要重构keywords字典,例如:
keywords = {
'_root': str,
'units': HelperFunctions._split(LINE,to=str,delim=','),
'datum': HelperFunctions._split(LINE,to=float,delim=' ')
}
Run Code Online (Sandbox Code Playgroud)
我现在拥有的完整,可行的演示如下:
class HelperFunctions:
def comma_split_to_strings(string:str) -> list:
# Returns a list of strings
return string.split(',')
def split_to_floats(string:str) -> list:
# Returns a 1D list of floats
return list(map(float,string.split()))
keywords = {
'_root': str,
'units': HelperFunctions.comma_split_to_strings,
'datum': HelperFunctions.split_to_floats
}
card = {}
key = 'units'
value = 'Pa,kg,km'
if key in keywords: …Run Code Online (Sandbox Code Playgroud) 对于一些大文件,
lines_a = len(fa.readlines())
print(lines_a)
Run Code Online (Sandbox Code Playgroud)
而对于Bash(在Mac上):
wc -l
Run Code Online (Sandbox Code Playgroud)
结果是不同的!
可能的原因是什么?
python ×3
bash ×2
julia ×2
algorithm ×1
callgrind ×1
convex-hull ×1
delaunay ×1
fortran ×1
fortran90 ×1
html ×1
ipopt ×1
julia-jump ×1
mime ×1
python-3.x ×1
recursion ×1
rm ×1
shell ×1
ubuntu-16.04 ×1
valgrind ×1