重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
形式:
新宾ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
公式:抛物线方程是指抛物线的轨迹方程,是一种用方程来表示抛物线的方法。在几何平面上可以根据抛物线的方程画出抛物线。抛物线在合适的坐标变换下,也可看成二次函数图像。
右开口抛物线:y^2=2px;左开口抛物线:y^2=-2px;上开口抛物线:x^2=2py;下开口抛物线:x^2=-2py。
定义:平面内与一个定点F 一条直线L距离相等的点的轨迹叫做抛物线,点F叫做抛物线的焦点,直线L叫做抛物线的准线,定点F不在定直线上。它与椭圆、双曲线的第二定义相仿,仅比值(离心率e)不同,当e=1时为抛物线,当0e1时为椭圆,当e1时为双曲线。
扩展资料
求抛物线的方法:
1、知道抛物线过三个点(x1,y1)、(x2,y2)、(x3,y3),设抛物线方程为y=ax^2+bx+cx,将各个点的坐标代进去得到一个三元一次方程组,解得a,b,c的值即得解析式。
2、知道抛物线的与x轴的两个交点(x1,0)、(x2,0),并知道抛物线过某一个点(m,n),设抛物线的方程为y=a(x-x1)(x-x2),然后将点(m,n)代入去求得二次项系数a。
3、知道对称轴x=k,设抛物线方程是y=a(x-k)^2+b,再结合其它条件确定a,c的值。
4、知道二次函数的最值为p,设抛物线方程是y=a(x-k)^2+p,a,k要根据其它条件确定。
参考资料:百度百科-抛物线
用描点法
例如y=a(x-b)²+h
a不为0
1、描出顶点(b,h)
2、描出与x轴的2个交点(令y=0)
3、令x=0描出抛物线与y轴交点
4、取2个对称点,描出点的坐标,用平滑曲线连接即可,点取的越多,抛物线越准
1:二分法
求根号5
a:折半: 5/2=2.5
b:平方校验: 2.5*2.5=6.255,并且得到当前上限2.5
c:再次向下折半:2.5/2=1.25
d:平方校验:1.25*1.25=1.56255,得到当前下限1.25
e:再次折半:2.5-(2.5-1.25)/2=1.875
f:平方校验:1.875*1.875=3.5156255,得到当前下限1.875
每次得到当前值和5进行比较,并且记下下下限和上限,依次迭代,逐渐逼近平方根:
代码如下:
import math
from math import sqrt
def sqrt_binary(num):
x=sqrt(num)
y=num/2.0
low=0.0
up=num*1.0
count=1
while abs(y-x)0.00000001:
print count,y
count+=1
if (y*ynum):
up=y
y=low+(y-low)/2
else:
low=y
y=up-(up-y)/2
return y
print(sqrt_binary(5))
print(sqrt(5))
2:牛顿迭代
仔细思考一下就能发现,我们需要解决的问题可以简单化理解。
从函数意义上理解:我们是要求函数f(x) = x²,使f(x) = num的近似解,即x² - num = 0的近似解。
从几何意义上理解:我们是要求抛物线g(x) = x² - num与x轴交点(g(x) = 0)最接近的点。
我们假设g(x0)=0,即x0是正解,那么我们要做的就是让近似解x不断逼近x0,这是函数导数的定义:
从几何图形上看,因为导数是切线,通过不断迭代,导数与x轴的交点会不断逼近x0。
#!/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)
# 这就是你想要的,代码解决了你的大部分问题,可以求两条双曲线交点,或者直线与双曲线交#点,或者两直线交点. 不过定义双曲线时候使用的是一般式.也也尽可能做了测试,如果有#问题的话,追问吧
属于隐函数求导.
需要将y看作是x的函数,即y=y(x),之后就和复合函数求导一样的了
比如说x^2/a^2+y^2/b^2=1两边对x求导,得到
2x/a^2+2y*y'/b^2=0
变形为y'=xb^2/(ya^2)
类似的,抛物线求导x^2=2py
2x=2py'
y'=x/p
根据图像找顶点坐标(h,k)代入公式y=a(x-h)^2+k,再从图像上找另一点坐标代入上式求出a即可得到二次函数解析式。
知道抛物线上任意三点A,B,C
则可设抛物线方程为y=ax²+bx+c
将三点代入方程解三元一次方程组
即可这种也有特殊情况即其中两点是抛物线与x轴焦点
即(x1,0)(x2,0)
则可设抛物线方程为:y=a(x-x1)(x-x2)
将第三点代入方程即可求出a,
得出抛物线方程如:
已知抛物同x轴的交点为(-1,0)、(3,0),
抛物线上另一点A(2,3)
则方程可设为y=a(x+1)(x-3)
将A代入方程得3=a(2+1)(2-3)
a=-1
即抛物线方程为:y=-x+2x+3。
扩展资料
求抛物线解析式要注意因题而异:
抛物线表达式中的交点式y=a(x-x1)(x-x2)又称两根式,在已知抛物线与x轴的交点坐标求解析式时一般采用这种方法,直接把x轴上的交点坐标代入交点式,再根据其他条件确定a及其他未知的值.
求抛物线解析式要注意因题而异,根据已知条件的特征灵活运用不同的表达式,合理的运用能大大简化解答的过程。
如果已知抛物线经过的三点都是一般的点,则采用一般式;如果已知抛物线经过的点有顶点,则采用顶点式;如果已知抛物线经过的点是x轴上的点,则采用交点式。