我的任务是绘制隐式函数x ^ 2 + y ^ 2 = 1 + 4.5sin ^ 2(xy),并且不允许使用诸如fimplicit或ezplot之类的“隐式绘制函数”。
我被plot,polarplot和fzero卡住了,就是这样。
这些说明似乎暗示着转换为极性函数是关键,但是在尝试,阅读和谷歌搜索几个小时之后,我仍然不知道如何执行此操作。
将x和y转换为其极性形式仍然不能解决所有theta值的r问题,所以我很困惑。
任何帮助将不胜感激。
干杯!
答案 0 :(得分:0)
由于不能同时使用轮廓,弯曲或ezplot。
我了解到您的老师希望您使用The circle example
。您可以找到它的定义Implcit function theorem。
我认为您应该从维基百科文章中的dy/dx = (2x+9ysin(xy)cos(xy))/(2y+9xsin(xy)cos(xy))
开始。
请记住,您只需要为图的一部分求解即可,其余只是对称性。
您的起点应该是(x = 0,y = 1),这是一个解决方案。
然后您会发现
y <- y + (2x+9ysin(xy)cos(xy))/(2y+9xsin(xy)cos(xy))*dx
x <- x + dx
您认识到一个简单的ODE
最简单的解决方法是从(x = 0,y = 1)开始(这是一个解决方案),选择步骤dx(0.01),然后保存算法中的所有点
[x,y]=meshgrid([-3:0.01:3],[-3:0.01:3])
z= x.^2 + y.^2 - 1.0 - 4.5.*sin(x.*y).^2
v = [0,0];
contour(x,y,z,v)
直到遇到麻烦(雅各派的决定因素为0)
有关提示,我离开剧情:
我相信当x在[-3,3]中并且对于y时,您的隐式函数都将给出结果。
如此
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread ("imageA.png",0)
plt.hist (img.ravel(), 256, [0,265])
plt.show()
cv2.waitkey (0)
cv2.destroyAllWindows ()
应该给您类似
答案 1 :(得分:-1)
def f(df, threshold=3):
df1 = df.unstack().rename_axis(('col','idx')).reset_index(name='val')
m = df1['val'].eq(1)
g = (df1['val'] != df1.groupby('col')['val'].shift()).cumsum()
mask = g.groupby(g).transform('count').ge(threshold) & m
return (df1[mask].groupby([df1['col'], g])['idx']
.agg(['first','last'])
.reset_index(level=1, drop=True)
.reset_index())
filtered_df = df.pipe(f, threshold=3)
print (filtered_df)
col first last
0 A 2 5
1 B 0 2
2 B 4 7