重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#!/usr/bin/env python
成都创新互联从2013年开始,先为临湘等服务建站,临湘等地企业,进行企业商务咨询服务。为临湘企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
# -*- 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=a(x-b)²+h
a不为0
1、描出顶点(b,h)
2、描出与x轴的2个交点(令y=0)
3、令x=0描出抛物线与y轴交点
4、取2个对称点,描出点的坐标,用平滑曲线连接即可,点取的越多,抛物线越准
抛物线的基本知识点如下:
1、抛物线是轴对称图形
对称轴为直线x=—b/2a,对称轴与抛物线唯一的交点为抛物线的顶点P,特别地,当b=0时,抛物线的对称轴是y轴(即直线x=0)。
2、抛物线有一个顶点P
坐标为:P(—b/2a,(4ac—b^2)/4a)当—b/2a=0时,P在y轴上;当=b^2—4ac=0时,P在x轴上。
3、二次项系数a决定抛物线的开口方向和大小
当a0时,抛物线向上开口;当a0时,抛物线向下开口,|a|越大,则抛物线的开口越小。
4、一次项系数b和二次项系数a共同决定对称轴的位置
当a与b同号时(即ab0),对称轴在y轴左;当a与b异号时(即ab0),对称轴在y轴右。
5、常数项c决定抛物线与y轴交点
抛物线与y轴交于(0,c)。
6、抛物线与x轴交点个数
=b^2—4ac0时,抛物线与x轴有2个交点。
=b^2—4ac=0时,抛物线与x轴有1个交点。
=b^2—4ac0时,抛物线与x轴没有交点。X的取值是虚数(x=—bb^2—4ac的值的相反数,乘上虚数i,整个式子除以2a)。
列表,在自变量允许的取值范围内,取几个值,并计算相应的函数值,取值越多,图象也越准确
y=x/1+x^2的图形:
公式可以简化成 y = x^2 + x ,是一个二次函数,二次函数的图像是一条抛物线。
如果是x分之1,那么公式就是y = 1/x + x^2,图形如下图所示:
扩展资料:
二次函数表达式为y=ax²+bx+c(且a≠0),它的定义是一个二次多项式(或单项式)。图像是一个抛物线。
如果令y值等于零,则可得一个二次方程。该方程的解称为方程的根或函数的零点。若表达式中b^2-4ac0,则抛物线与X轴有两个交点,若b^2-4ac=0,则抛物线与X轴有一个交点,若小于0,则没有交点。
题中该式子是与X轴没有交点的。
首先在Excel中把坐标值做出来:
A1:X;B1:Y(y=x^2);C1:A1“,"B1。得出的C1就是坐标值;把A列往下托得出A2、A3;把B列往下托得出B2、B3,把C列往下托得出C2、C3。将C列复制。
打开CAD输入命令"pl"多段线命令,回车,在命令处右击,把刚从Excel中复制的C列数据粘贴到命令行处,这样就可生成抛物线了。
ezplot('y=x^2')
x=-1:0.01:1;
y=x^2;
plot(x,y);
简介
在数学中,抛物线是一个平面曲线,它是镜像对称的,并且当定向大致为U形(如果不同的方向,它仍然是抛物线)。它适用于几个表面上不同的数学描述中的任何一个,这些描述都可以被证明是完全相同的曲线。
抛物线的一个描述涉及一个点(焦点)和一条线(准线)。焦点并不在准线上。抛物线是该平面中与准线和焦点等距的点的轨迹。抛物线的另一个描述是作为圆锥截面,由圆锥形表面和平行于锥形母线的平面的交点形成。第三个描述是代数。