小编Hug*_*ell的帖子

找到闭合的2d均匀立方B样条的面积

我有一个2d点列表,它是闭合均匀立方B样条的控制顶点(Dx).我假设一条简单的曲线(非自相交,所有控制点都不同).

我试图找到曲线所包围的区域:

在此输入图像描述

如果我计算结点(Px),我可以将曲线视为多边形; 那么我"只是"需要在实际曲线和连接结点的直线之间找到每个分段的剩余三角形区域.

据我所知,Bspline的形状(因此区域)在旋转和平移下是不变的 - 所以对于每个段,我可以找到一个平移,将t = 0结放在原点,旋转放置t = 1结在+ x轴上:

在此输入图像描述

我可以通过插入点和重新分组来找到曲线的等式:

P(t) = (
    (t**3)*(-Dm1 + 3*D0 - 3*D1 + D2)
    + (t**2)*(3*Dm1 - 6*D0 + 3*D1)
    + t*(-3*Dm1 + 3*D1)
    + (Dm1 + 4*D0 + D1)
) / 6.
Run Code Online (Sandbox Code Playgroud)

但我正在试图将它整合在一起 - 我可以做到

 1
/
| Py(t) dt
/
t=0
Run Code Online (Sandbox Code Playgroud)

但这不会给我区域.我我需要的是

 Px(t=1)
/
| Py(t) (dPx(t) / dt) dt
/
x = Px(t=0)
Run Code Online (Sandbox Code Playgroud)

但在我走得更远之前,我真的很想知道:

  1. 这是正确的面积计算吗?理想情况下,分析解决方案将成为我的一天!

  2. 一旦找到这个区域,如何判断是否需要从基础多边形中添加或减去它(第一个图中的红色区域与绿色区域相比)?

  3. 是否有任何Python模块可以为我做这个计算?Numpy有一些评估立方Bsplines的方法,但没有一种方法可以用来处理区域.

  4. 有更简单的方法吗?我正在考虑可能在一堆点上评估P(t) - 类似于t = numpy.arange(0.0, 1.0, 0.05)- …

python math numpy spline

14
推荐指数
1
解决办法
2350
查看次数

正确地从字符串**创建一个lambda函数**

给出一个字符串如

"2*(i+j) <= 100"
Run Code Online (Sandbox Code Playgroud)

我想生成相应的lambda函数,

fn = lambda i,j: 2*(i+j) <= 100
Run Code Online (Sandbox Code Playgroud)
  • 我可以这样做eval,但我正在寻找一种不那么邪恶的方法.

  • 我已经找到

    import ast
    f = ast.Lambda('i,j', '2*(i+j) <= 100')
    
    Run Code Online (Sandbox Code Playgroud)

    但我还没弄清楚如何执行结果!

  • 理想情况下,我想自动拉出参数列表('i','j') - 现在,我只是使用re.findall('\ w +'),但我希望能够正确使用现有的功能,cos而不是将它们视为"关键字".


我在看是否有用于处理复杂数学集的Python库(使用数学集合构建器表示法构建)?并试图弄清楚如何最好地将set-builder符号解析为lambdas以提供给约束求解器.

我基本上希望ast.literal_eval也可以识别变量.

理想情况下,鉴于i >= 20我想回来((lambda x: x >= 20), ['i']),然后我可以直接提供给constraint.

python string lambda

13
推荐指数
2
解决办法
7364
查看次数

Scipy Derivative

我对Scipy的衍生功能有疑问.我昨晚用它并得到了一些奇怪的答案.我今天早上再次尝试了一些简单的功能,得到了一些正确的答案和一些错误.这是我的测试:

In [1]: def poly1(x):
...:     return x**2

In [3]: derivative(poly1, 0)
Out[3]: 0.0

In [4]: def poly2(x):
...:    return (x-3)**2

In [6]: derivative(poly2, 3)
Out[6]: 0.0

In [8]: def sin1(x):
...:     return sin(x)

In [14]: derivative(sin1, pi/2)
Out[14]: 5.5511151231257827e-17

In [15]: def poly3(x):
....:     return 3*x**4 + 2*x**3 - 10*x**2 + 15*x - 2

In [19]: derivative(poly3, -2)
Out[19]: -39.0

In [20]: derivative(poly3, 2)
Out[20]: 121.0

In [22]: derivative(poly3, 0)
Out[22]: 17.0
Run Code Online (Sandbox Code Playgroud)

我用手检查了poly3的值,并且-2 = 17,2 = 95,0 = 15.所以我使用的函数是错误的,或者函数是否有问题.谢谢 …

python math scipy

6
推荐指数
1
解决办法
6946
查看次数

如何存储和重置 PHP 数组指针?

我有一个关联数组,即

$primes = array(
  2=>2,
  3=>3,
  5=>5,
  7=>7,
  11=>11,
  13=>13,
  17=>17,
  // ...etc
);
Run Code Online (Sandbox Code Playgroud)

然后我做

// seek to first prime greater than 10000
reset($primes);
while(next($primes) < 10000) {}
prev($primes);

// iterate until target found
while($p = next($primes)) {
      $res = doSomeCalculationsOn($p);

      if( IsPrime($res) )
          return $p;
}
Run Code Online (Sandbox Code Playgroud)

问题是 IsPrime 还会遍历 $primes 数组,

function IsPrime($num) {
    global $primesto, $primes, $lastprime;

    if ($primesto >= $num)
        // using the assoc array lets me do this as a lookup
        return isset($primes[$num]);

    $root = (int) …
Run Code Online (Sandbox Code Playgroud)

php arrays loops

4
推荐指数
1
解决办法
7750
查看次数

python中的字符串操作

我有一个像这样的python文件

import urllib2

try:
    data = urllib2.urlopen('http:....').read()
except urllib2.HTTPError, e:
    print "HTTP error: %d" % e.code
except urllib2.URLError, e:
    print "Network error: %s" % e.reason.args[1]

print data1
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

>>>
15.95

>>>
Run Code Online (Sandbox Code Playgroud)

我需要对data1(或任何替代变量)执行一些操作,这样当我打印data1(或新变量)时,输出没有额外的行.换句话说,我希望它看起来像这样:

>>>
15.95
>>>
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒我对python相对较新.我一直在用\ r进行调整,似乎无法让它工作.

python

3
推荐指数
1
解决办法
165
查看次数

Python - 将格式化数字添加到字符串

使用Python v2,我有以下代码:

print ("Total of the sale is: ${:,.2f}".format(TotalAmount))
Run Code Online (Sandbox Code Playgroud)

这是一个名为"TotalAmount"的字符串,并将其格式化为如下所示:$ 100.00,即:货币值,无论数字是多少.

有没有办法将格式化的输出写入字符串?

谢谢你的帮助.

python string format

1
推荐指数
1
解决办法
1790
查看次数

将类作为列表索引的魔术方法?

我可以使用布尔值作为列表索引:

isTrue = True
print ('No','Yes')[isTrue]  -> 'Yes'
Run Code Online (Sandbox Code Playgroud)

但如果我定义一个类,

class YeaOrNay(object):
    def __init__(self, val):
        self.val = bool(val)

    def __nonzero__(self):
        return self.val

    def __int__(self):
        return int(self.val)

    def __str__(self):
        return ('Nay','Yea')[self.val]
Run Code Online (Sandbox Code Playgroud)

并尝试以相同的方式使用它:

isTrue = YeaOrNay(True)
print ('No','Yes')[isTrue]
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

TypeError: tuple indices must be integers, not YeaOrNay
Run Code Online (Sandbox Code Playgroud)

我可以解决它,

print ('No','Yes')[int(isTrue)]  ->  'Yes'
Run Code Online (Sandbox Code Playgroud)

但是我真的想知道是否有一些魔法类方法可以添加到YeaOrNay中以使其"正常工作".

python

0
推荐指数
1
解决办法
538
查看次数

二维列表的平均值

基本上,该函数应该提供列表中列表的平均值.例:

lst = [[46, 27, 68], [26, 65, 80], [98, 56, 35], [98, 65, 0]]
average(lst)
>>> [47.0, 57.0, 63.0, 54.33333333333333]
Run Code Online (Sandbox Code Playgroud)

我的代码:

def average(l):
    for i in range(len(l)):
        for j in range(len(l[0])):
            l[i] / l[j]
    return l
Run Code Online (Sandbox Code Playgroud)

我的编码显示一个错误标志,上面写着"TypeError:/ support'和'list'"不支持的操作数类型.我不知道我做错了什么.

python

0
推荐指数
1
解决办法
2660
查看次数

Python For/If语法错误

这是我的代码:

for i in tuples:
    if i[0] == "U_shape":
        pieces.append(U_shape(i[1], boardLength, i[2])
    if i[0] == "I_shape":
        pieces.append(I_shape(i[1], i[2])
    if i[0] == "L_shape":
        pieces.append(L_shape(i[1], boardLength, i[2])
    if i[0] == "T_shape":
        pieces.append(T_shape(i[1], boardLength, i[2])
    if i[0] == "X_shape":
        pieces.append(X_shape(i[1], boardLength, i[2])
Run Code Online (Sandbox Code Playgroud)

这是错误:

if i[0] == "I_shape":
                    ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

python syntax for-loop if-statement

0
推荐指数
2
解决办法
183
查看次数

python找到多个列表的所有组合.完成编程新手

所以我是100%的新编程,虽然我对大多数事情都是一个非常快速的学习者,但我需要帮助.

我想在Python上使用多个列表找到所有可能的组合.我知道它有一个intertool,但我老实说甚至不知道从哪里开始,如何使用它甚至如何输入我的数据.

我正在尝试做的一个基本示例:

Flavors        Sizes      Toppings         Syrups
==========     =======    =============    ==============
Chocolate      Small      Sprinkles        Hot fudge
Vanilla        Medium     Gummy bears      Caramel 
Strawberry     Large      Oreo             Strawberry
Coffee                    Cookie dough     White chocolate
                          Snickers         etc.
                          Brownies
                          etc.
Run Code Online (Sandbox Code Playgroud)

对于口味和大小来说,只有一个选择,但让我们说糖浆我让他们选择三种选择,而对于浇头我也让他们选择三种.我想找到所有组合.

这很难吗?我需要什么样的代码以及如何输入我的变量?

谢谢.非常感激.

Ps- python可以采用多少组合?普通macbook pro的CPU需要多少钱?

python variables combinations loops factors

-1
推荐指数
1
解决办法
2698
查看次数