算出來有二個交點(diǎn)的,上面的是拋物線,下面是直線。交點(diǎn)比較好算的,將x=y平方帶入下面的式子,會求出二個y值,二個y值分別對應(yīng)二個x值,二個點(diǎn)都是交點(diǎn)哦
成都創(chuàng)新互聯(lián)公司是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),雅安服務(wù)器托管、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,成都電信服務(wù)器托管,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國大陸、港澳臺以及歐美等多個國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
把兩個函數(shù)的解析式看作是關(guān)于X、Y的方程,將兩個方程組成一個方程組,
解出這個方程組,則這個方程組的解就是這兩個函數(shù)的交點(diǎn)坐標(biāo)。
畫函數(shù)的圖像,都是經(jīng)過列表、描點(diǎn)、連線三個步驟。
具體如下:
聯(lián)立方程組,即y=3x-4=y=-3x+3即3x-4=-3x+3。
6x=7,x=7/6。
y=-1/2。
答案 交點(diǎn)(7/6,-1/2)。
首先要理解,函數(shù)是發(fā)生在集合之間的一種對應(yīng)關(guān)系。然后,要理解發(fā)生在A、B之間的函數(shù)關(guān)系有且不止一個。最后,要重點(diǎn)理解函數(shù)的三要素。
函數(shù)的對應(yīng)法則通常用解析式表示,但大量的函數(shù)關(guān)系是無法用解析式表示的,可以用圖像、表格及其他形式表示。
在一個變化過程中,發(fā)生變化的量叫變量(數(shù)學(xué)中,變量為x,而y則隨x值的變化而變化),有些數(shù)值是不隨變量而改變的,我們稱它們?yōu)槌A俊?/p>
把兩個函數(shù)的y和等號去掉。讓剩下的部分用一個等號連接起來。解出來的x就是橫坐標(biāo)。
再把x帶入兩個函數(shù)任意一個,解出來的y就是縱坐標(biāo)。
#!/usr/bin/env?python
#?-*-?coding:?utf-8?-*-
#?File?name:?parabolic
#???Project?name:?parabolic_equation
"""
..?moduleauthor::
..?Module..?name?parabolic?of?procjet?parabolic_equation
"""
from?sympy?import?*
import?matplotlib.pyplot?as?plt
import?numpy?as?np
def?_filterComplex(inputvalue,?description='inputvalue'):
try:
str(inputvalue).index('I')
except?ValueError:
return?False
else:
return?True
def?_checkBool(inputvalue,?description='inputvalue'):
"""
:param?inputvalue:
:param?description:
:return:
"""
if?not?isinstance(inputvalue,?bool):
raise?TypeError(
'The?{0}?must?be?boolean.?Given:?{1!r}'.format(description,?inputvalue))
def?_checkNumerical(inputvalue,?description='inputvalue'):
"""
:param?inputvalue:
:param?description:
:return:
"""
try:
inputvalue?+?1
except?TypeError:
raise?TypeError(
'The?{0}?must?be?numerical.?Given:?{1!r}'.format(description,?inputvalue))
def?_drawTowPara(expr_1,?expr_2,??inputmin,?inputmax?,step=0.1):
"""
:param?expr_1:
:param?expr_2:
:param?inputmin:
:param?inputmax:
:param?step:
:param?expr_1_evalwithY:
:param?expr_2_evalwithY:
:return:
"""
_checkNumerical(inputmin,?'xmin')
_checkNumerical(inputmax,?'xmax')
_checkNumerical(step,?'step')
y1List?=?[]
x1List?=?[]
y2List?=?[]
x2List?=?[]
if?expr_1.vertical?is?True:
x1List?=?np.arange(inputmin,?inputmax,?step)
for?x?in?x1List:
y1List.append(expr_1.evaluates_Y(x))
else:
y1List?=?np.arange(inputmin,?inputmax,?step)
for?y?in?y1List:
x1List.append(expr_1.evaluates_X(y))
if?expr_2.vertical?is?True:
x2List?=?np.arange(inputmin,?inputmax,?step)
for?x?in?x2List:
y2List.append(expr_2.evaluates_Y(x))
else:
y2List?=?np.arange(inputmin,?inputmax,?step)
for?y?in?y2List:
x2List.append(expr_2.evaluates_X(y))
plt.plot(x1List,?y1List,?'+')
plt.plot(x2List,?y2List,?'-')
plt.show()
def?_solveCrossing(expr_1,?expr_2):
"""
:param?expr_1:
:param?expr_2:
:return:
"""
x?=?Symbol('x')
y?=?Symbol('y')
print?"Given?the?first?expression:?{0!r}".format(expr_1.expr)
print?"Given?the?first?expression:?{0!r}".format(expr_2.expr)
ResultList?=?solve([expr_1.expr,?expr_2.expr],?[x,?y])
Complex?=?False
ResultListTrue?=?[]
for?i?in?range(0,?(len(ResultList)),1):?
if?_filterComplex(ResultList[i][0],?'x')?or?_filterComplex(ResultList[i][1],?'y'):
Complex?=?True
else:
ResultListTrue.append(ResultList[i])
if?len(ResultListTrue)?==?0?and?Complex:
print?"Two?hyperbolic?do?not?intersect,?and?there?is?imaginary?value."
elif?len(ResultListTrue)?==?1:
print?"Two?hyperbolic?tangent.:"?
print?ResultListTrue
else:
print?"Two?hyperbolic?intersection,?and?Points?are:"?
for?iterm?in?ResultListTrue:
print?iterm
class?Parabolic():
"""
"""
def?__init__(self,?a,?b,?c,?vertical=True):
"""
:return:
"""
_checkNumerical(a,?'a')
_checkNumerical(b,?'b')
_checkNumerical(c,?'c')
_checkBool(vertical,?'vertical')
self.a?=?a
self.b?=?b
self.c?=?c
self.vertical?=?vertical
self.y?=?Symbol('y')
self.x?=?Symbol('x')
self.xarray?=?[]
self.yarray?=?[]
if?vertical?is?True:
self.expr?=?(self.x**2)*self.a?+?self.x*self.b?+?self.c
else:
self.expr?=?(self.y**2)*self.a?+?self.y*self.b?+?self.c
def?__repr__(self):
"""
:return:
"""
if?self.vertical?is?True:
return?"The?Equation?look?like:?{0!r}".format(self.expr)
else:
return?"The?Equation?look?like:?{0!r}".format(self.expr)
def?evaluates_X(self,?inputvalue):
"""
:param?inputvalue:
:return:
"""
_checkNumerical(inputvalue,?'y')
return?self.expr.subs(self.y,?inputvalue)
def?evaluates_Y(self,?inputvalue):
"""
:param?inputvalue:
:return:
"""
_checkNumerical(inputvalue,?'x')
return?self.expr.subs(self.x,?inputvalue)
def?getArrays(self,?inputmin,?inputmax,?step=1):
"""
:param?inputmin:
:param?inputmax:
:param?step:
:return:
"""
_checkNumerical(inputmin,?'xmin')
_checkNumerical(inputmax,?'xmax')
_checkNumerical(step,?'step')
if?self.vertical?is?True:
for?x?in?range(inputmin,?inputmax,?step):
self.xarray.append(x)
self.yarray.append(self.evaluates_Y(x))
else:
for?y?in?range(inputmin,?inputmax,?step):
self.yarray.append(y)
self.xarray.append(self.evaluates_X(y))
def?drawPara(self,?inputmin,?inputmax,?step=1):
"""
:param?inputmin:
:param?inputmax:
:param?step:
:return:
"""
_checkNumerical(inputmin,?'xmin')
_checkNumerical(inputmax,?'xmax')
_checkNumerical(step,?'step')
yList?=?[]
xList?=?[]
if?self.vertical?is?True:
xList?=?np.arange(inputmin,?inputmax,?step)
for?x?in?xList:
yList.append(self.evaluates_Y(x))
else:
yList?=?np.arange(inputmin,?inputmax,?step)
for?y?in?yList:
xList.append(self.evaluates_X(y))
plt.plot(xList,?yList,?'+')
plt.show()
if?__name__?==?'__main__':
pa1?=?Parabolic(-5,3,6)
pa2?=?Parabolic(-5,2,5,?False)
print?pa1
print?pa2
_solveCrossing(pa1,?pa2)
_drawTowPara(pa1,?pa2,?-10,?10,?0.1)
# 這就是你想要的,代碼解決了你的大部分問題,可以求兩條雙曲線交點(diǎn),或者直線與雙曲線交#點(diǎn),或者兩直線交點(diǎn). 不過定義雙曲線時候使用的是一般式.也也盡可能做了測試,如果有#問題的話,追問吧