小编Dav*_*dC.的帖子

两个立方表达式之间的解析交集

我正在解决2个三次曲线的解析交集,其参数在下面的代码中的两个独立函数中定义.

通过绘制曲线,可以很容易地看出有一个交叉点:

在此输入图像描述

缩放版:

在此输入图像描述

但是,sym.solve没有找到交集,即在要求时print 'sol_ H_I(P) - H_II(P) =', sol,没有返回结果:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import sympy as sym


def H_I(P):
   return (-941.254840173) + (0.014460465765)*P + (-9.41529726451e-05)*P**2 + (1.23485231253e-06)*P**3

def H_II(P):
     return (-941.254313412) + (0.014234188877)*P + (-0.00013455013645)*P**2 + (2.58697027372e-06)*P**3

fig = plt.figure()

# Linspace for plotting the curves:
P_lin = np.linspace(-5.0, 12.5, 10000)

# Plotting the curves:
p1, = plt.plot(P_lin, H_I(P_lin), color='black' )
p2, = plt.plot(P_lin, H_II(P_lin), color='blue' ) …
Run Code Online (Sandbox Code Playgroud)

python matplotlib symbolic-math sympy

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

找到两条三次曲线之间的公共切线

给定两个函数,我想找出两条曲线的公切线:

在此处输入图片说明

公切线的斜率可以通过以下方式获得:

slope of common tangent = (f(x1) - g(x2)) / (x1 - x2) = f'(x1) = g'(x2)
Run Code Online (Sandbox Code Playgroud)

所以最终我们有一个由 2 个方程组和 2 个未知数组成的系统:

f'(x1) = g'(x2) # Eq. 1
(f(x1) - g(x2)) / (x1 - x2) = f'(x1) # Eq. 2
Run Code Online (Sandbox Code Playgroud)

由于某种原因我不明白,python没有找到解决方案:

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import sys
from sympy import *
import sympy as sym


# Intial candidates for fit 
E0_init = -941.510817926696
V0_init = 63.54960592453
B0_init = 76.3746233515232
B0_prime_init = …
Run Code Online (Sandbox Code Playgroud)

python numpy sympy scipy equation-solving

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

由两个散射点表面之间的交点定义的曲线,采样方式不同

我有两组1__scatter_xyz.dat2__scatter_xyz.dat散点。

这些点由 3 个坐标定义:x, y,z

1__scatter_xyz.dat: https://paste.ubuntu.com/25069931/

2__scatter_xyz.dat: https://paste.ubuntu.com/25069938/

这两组散点在一个区域内相交:

gnuplot>  splot "1__scatter_xyz.dat" using 3:1:2 with points lt 1 title "1", "2__scatter_xyz.dat" using 3:1:2 with points lt 1 lc 2 title "2"

gnuplot> set xlabel 'x'
gnuplot> set ylabel 'y'
gnuplot> set zlabel 'z'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

的表面之间的交叉set 1与表面set 2将限定的线/曲线,在2D标绘y-x图,会给我们这两组之间的相界。

我想在2D绘制y-x图该线/曲线,从两个表面的交叉产生。

我思考如何解决这个问题的方式:

我们可以定义一个新函数,w = z_{1} - z_{2}。这两个表面之间的交叉点将是w = …

python interpolation matplotlib scipy

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

使用默认后备选项筛选列表值

给出2个数字列表:

real_solutions_sols1 =  [-53.2909210236, -8.31658000998, 1.87689837129, 1.4]
real_solutions_sols2 =  [-21.1439685227, -19.2]
Run Code Online (Sandbox Code Playgroud)

我想相同的代码重写名单,使它们包含之间数字0.14.0:

real_solutions_sols1 =  [ 1.87689837129, 1.4]
Run Code Online (Sandbox Code Playgroud)

对于第二个列表,这是不可能的,所以我希望代码返回完整列表:

real_solutions_sols2 =  [-21.1439685227, -19.2]
Run Code Online (Sandbox Code Playgroud)

以下代码适用于real_solutions_sols2:

real_roots_zero_to_four = []
for i in real_solutions_sols2:
   if (i >= 0.1) and (i <= 4.0):
      real_roots_zero_to_four.append(i)
   else:
     real_roots_zero_to_four = real_solutions_sols2

print 'real_roots_zero_to_four = ', real_roots_zero_to_four
Run Code Online (Sandbox Code Playgroud)

if条件未得到满足,所以我们跳转到else的语句.

real_roots_zero_to_four = [-21.14396852,-19.2]

但是,对于第一个列表,它无限循环:

real_roots_zero_to_four = []
for i in real_solutions_sols1:
   if (i >= 0.1) and (i <= 4.0):
      real_roots_zero_to_four.append(i)
   else: …
Run Code Online (Sandbox Code Playgroud)

python for-loop if-statement list append

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

如何创建一个列表,其中每个新元素作为最后一个元素加上一个常量?

鉴于以下变量:

a_4th =  6.08
delta_a = 0.052
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含以下内容的列表:

a = [a_4th, a_5th, a_6th, a_7th ... ]
Run Code Online (Sandbox Code Playgroud)

哪里:

a_5th = a_4th + delta_a
a_6th = a_5th + delta_a
a_7th = a_6th + delta_a
Run Code Online (Sandbox Code Playgroud)

这段代码:

a = []  # create the empty list
a.insert(0, a_4th) # initialize the 1st item of the list

for i in xrange (1,19):   # I would like the list to be 18 items long. 
                          # a[0] is defined in the previous line.
  a[i] = a[i-1] + delta_a …
Run Code Online (Sandbox Code Playgroud)

python list python-2.7

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