这是情况:我有一个符号函数lamb,它是变量z的元素和变量h的函数元素的函数.这是羊羔象征功能的图像
现在我想根据变量eta和xi计算此函数的Gradient和Hessian.当然我用谷歌搜索它,但我找不到直接的方法来做到这一点.我发现的是这里,但正如我所说,它并不是这种情况的最佳方法.任何的想法?贝娄,源代码.谢谢.
from sympy import Symbol, Matrix, Function, simplify
eta = Symbol('eta')
xi = Symbol('xi')
x = Matrix([[xi],[eta]])
h = [Function('h_'+str(i+1))(x[0],x[1]) for i in range(3)]
z = [Symbol('z_'+str(i+1)) for i in range(3)]
lamb = 0
for i in range(3):
lamb += 1/(2*sigma**2)*(z[i]-h[i])**2
simplify(lamb)
Run Code Online (Sandbox Code Playgroud) 我想在绘图循环中更新箭头位置。我发现这篇文章对补丁是矩形的情况有一个类似的问题。下面,在提到的帖子中提出的解决方案添加了 Arrow 补丁。
from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle, Arrow
import numpy as np
nmax = 10
xdata = range(nmax)
ydata = np.random.random(nmax)
fig, ax = plt.subplots()
ax.plot(xdata, ydata, 'o-')
ax.xaxis.set_ticks(xdata)
plt.ion()
rect = plt.Rectangle((0, 0), nmax, 1, zorder=10)
ax.add_patch(rect)
arrow = Arrow(0,0,1,1)
ax.add_patch(arrow)
for i in range(nmax):
rect.set_x(i)
rect.set_width(nmax - i)
#arrow.what --> which method?
fig.canvas.draw()
plt.pause(0.1)
Run Code Online (Sandbox Code Playgroud)
箭头补丁的问题在于它显然没有像矩形补丁那样与它的位置相关的设置方法。欢迎任何提示。
在程序的执行过程中,我一般会插入很多追加代码行,主要是打印命令,帮助我理解和调试执行的程序。不幸的是,我经常忘记哪些行来自代码,哪些是附加的,应该在一段时间后删除。对于大型程序,这个问题会变得更糟。
好吧,我发现这篇文章教如何保持任意用户选择的行突出显示(请参阅部分:光标移动后保持突出显示)。文章给出的解决方法是在.vimrc中包含如下代码:
:nnoremap <silent> <Leader>l ml:execute 'match Search /\%'.line('.').'l/'<CR>
Run Code Online (Sandbox Code Playgroud)
所以,每次当我按下\l 时,当前行都被高亮显示并保持不变,而前一个高亮的行,如果有,则不高亮。
这不是我想要的行为。相反,我希望能够根据需要突出显示任意数量的任意行,而无需取消突出显示先前突出显示的行。如果可能的话,使用像\l这样的独特命令。
有人知道解决方案吗?
提前致谢。
编辑:
yolenoyer提出的命令解决了最初的问题。但是,现在提出了另一个问题。以下命令:
:call clearmatches()
Run Code Online (Sandbox Code Playgroud)
建议清理突出显示的线条会清理所有线条,我希望能够清理特定的突出显示线条,而不是一次将它们全部清除。是否可以?
我正在解决一个名为codefights的网站上的一些问题,最后一个解决的是关于二叉树的问题,其中:
考虑一个特殊的工程师和医生家庭。这个家庭有以下规则:
每个人都有两个孩子。工程师的第一个孩子是工程师,第二个孩子是博士。医生的第一个孩子是医生,第二个孩子是工程师。一代又一代的博士和工程师都是从工程师开始的。
我们可以用这张图来表示这种情况:
Run Code Online (Sandbox Code Playgroud)E / \ E D / \ / \ E D D E / \ / \ / \ / \ E D D E D E E D
给定一个人在上面祖先树中的等级和位置,找到这个人的职业。注意:在这棵树中,第一个孩子被视为左孩子,第二个孩子被视为右孩子。
由于有一些空间和时间限制,解决方案不能基于实际构建树,直到所需的级别并检查哪个元素在所要求的位置。到现在为止还挺好。我用python编写的建议解决方案是:
def findProfession(level, pos):
size = 2**(level-1)
shift = False
while size > 2:
if pos <= size/2:
size /= 2
else:
size /= 2
pos -= size
shift = not shift
if pos == 1 and shift == False:
return 'Engineer'
if pos …
Run Code Online (Sandbox Code Playgroud) 挖掘一些代码,我发现了一个奇怪的方式来调用一个实例对象的方法,我将在下面的示例代码中显示:
class Example{
public:
void Print(){ std::cout << "Hello World" << std::endl;}
};
int main(){
Example ex;
ex.Example::Print(); // Why use this notation instead of just ex.Print();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
ex.Example :: Print()和标准方式ex.Print()之间有任何行为差异吗?为什么作者的代码使用的是前者而不是后者?
提前致谢
algorithm ×1
binary-tree ×1
c++ ×1
class ×1
dropbox ×1
highlight ×1
linux ×1
matplotlib ×1
methods ×1
object ×1
python ×1
python-2.7 ×1
python-3.x ×1
sympy ×1
tree ×1
ubuntu ×1
vim ×1