- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个线性方程组和一个二次方程组,我可以用 numpy
和 scipy
建立它们,这样我就可以获得图形解决方案。考虑示例代码:
#!/usr/bin/env python
# Python 2.7.1+
import numpy as np #
import matplotlib.pyplot as plt #
# d is a constant;
d=3
# h is variable; depends on x, which is also variable
# linear function:
# condition for h: d-2x=8h; returns h
def hcond(x):
return (d-2*x)/8.0
# quadratic function:
# condition for h: h^2+x^2=d*x ; returns h
def hquad(x):
return np.sqrt(d*x-x**2)
# x indices data
xi = np.arange(0,3,0.01)
# function values in respect to x indices data
hc = hcond(xi)
hq = hquad(xi)
fig = plt.figure()
sp = fig.add_subplot(111)
myplot = sp.plot(xi,hc)
myplot2 = sp.plot(xi,hq)
plt.show()
该代码生成此图:
很明显,这两个函数是相交的,因此有一个解决方案。
我怎样才能自动解决解决方案(交点),同时保持大部分函数定义不变?
最佳答案
事实证明可以使用 scipy.optimize.fsolve
来解决这个问题,只需要注意 OP 中的函数定义在 y=f(x)
格式;而 fsolve
将需要它们采用 f(x)-y=0
格式。这是固定代码:
#!/usr/bin/env python
# Python 2.7.1+
import numpy as np #
import matplotlib.pyplot as plt #
import scipy
import scipy.optimize
# d is a constant;
d=3
# h is variable; depends on x, which is also variable
# linear function:
# condition for h: d-2x=8h; returns h
def hcond(x):
return (d-2*x)/8.0
# quadratic function:
# condition for h: h^2+x^2=d*x ; returns h
def hquad(x):
return np.sqrt(d*x-x**2)
# for optimize.fsolve;
# note, here the functions must be equal to 0;
# we defined h=(d-2x)/8 and h=sqrt(d*x-x^2);
# now we just rewrite in form (d-2x)/16-h=0 and sqrt(d*x-x^2)-h=0;
# thus, below x[0] is (guess for) x, and x[1] is (guess for) h!
def twofuncs(x):
y = [ hcond(x[0])-x[1], hquad(x[0])-x[1] ]
return y
# x indices data
xi = np.arange(0,3,0.01)
# function values in respect to x indices data
hc = hcond(xi)
hq = hquad(xi)
fig = plt.figure()
sp = fig.add_subplot(111)
myplot = sp.plot(xi,hc)
myplot2 = sp.plot(xi,hq)
# start from x=0 as guess for both functions
xsolv = scipy.optimize.fsolve(twofuncs, [0, 0])
print(xsolv)
print("xsolv: {0}\n".format(xsolv))
# plot solution with red marker 'o'
myplot3 = sp.plot(xsolv[0],xsolv[1],'ro')
plt.show()
exit
...结果是:
xsolv: [ 0.04478625 0.36380344]
...或者,在绘图图像上:
引用:
关于python - 在 numpy/matplotlib 中以图形和数字方式求解线性二次方程组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24234892/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我求解 jQuery 二次方程的代码有什么问题? a = parseFloat($('#a').val()); b = parseFloat($('#b').val()); c = parseFloa
我应该在 matlab 代码中加入什么条件才能使用这些公式得到二次方程的精确解: x1=(-2*c)/(b+sqrt(b^2-4*a*c)) x2=(-2*c)/(b-sqrt(b^2-4*a*c))
我正在做一项学校作业。我应该实现一个类并提供方法 getSolution1 和 getSolution2。但是,我的代码有 2 个我无法弄清楚的问题。 问题 #1 在这一行: solution1= (
如果这个问题很简单,我很抱歉,但我是 C++ 的新手。我正在设计一个使用二次公式计算 2 个根的程序。但是,当我的判别式为负数时,我的程序不起作用。 #define _USE_MATH_DEFINES
我对 Javascript 不太熟悉。我希望有人能简单地解释一下编辑以下代码的过程。 this.hideNextButton(); this.hidePreviousButton(); var tha
我是一名优秀的程序员,十分优秀!