精华内容
下载资源
问答
  • fprintf('向量正交\n'); else fprintf('个向量不正交\n'); end   result a1 = 2 1 1 1 a2 = 2 2 2 2 个向量不正交 >>   resource [文档] ww2.mathworks.cn/help/matlab ...

         matlab : R2018a 64bit
          OS : Windows 10 x64
    typesetting : Markdown
           blog : my.oschina.net/zhichengjiu
          gitee : gitee.com/zhichengjiu

    code

    clear
    clc
    
    a1=[2;1;1;1]  %将两个要进行判断的向量写在这里
    a2=[2;2;2;2]
     
    if(dot(a1,a2)==0)
        fprintf('两个向量正交\n');
    else
        fprintf('两个向量不正交\n');
    end
    
    

    result

    
    a1 =
    
         2
         1
         1
         1
    
    
    a2 =
    
         2
         2
         2
         2
    
    两个向量不正交
    >> 
    

    resource

    • [文档] ww2.mathworks.cn/help/matlab
    • [文档] ww2.mathworks.cn/help/simulink
    • [平台] www.oschina.net
    • [平台] gitee.com


    感谢帮助 志成就 的人们。
    matlab优秀,值得学习。基础知识 + 专业知识 + matlab = ?
    Simulink,用于仿真和基于模型的设计,值得学习。
    该博文仅可用于测试与参考。

    转载于:https://my.oschina.net/zhichengjiu/blog/3013244

    展开全文
  • 检测判断向量正交 还是平行

    千次阅读 2018-02-12 22:12:33
    # coding=utf-8 from math import sqrt, acos, pi class Vector(object): ...根据坐标轴列表输入 创建向量, 并创建该向量所处的空间维度""" CANNOT_NORMALIZE_ZERO_VECTOR_MSG = 'Cannot normaliz
    # coding=utf-8
    from math import sqrt, acos, pi
    
    class Vector(object):
        """docstring for Vector"""
        """根据坐标轴列表输入 创建向量, 并创建该向量所处的空间维度"""
        CANNOT_NORMALIZE_ZERO_VECTOR_MSG = 'Cannot normalize the zero vector'
        def __init__(self, coordinates):
            super(Vector, self).__init__()
            try:
                if not coordinates:
                    raise ValueError
                self.coordinates = tuple( [x for x in coordinates])
                self.dimension = len(coordinates)    
            except ValueError:
                raise ValueError('The coordinates must be nonempty')
            except TypeError:
                raise TypeError('The coordinates must be an iterable')
    
        # '''能够使python的内置print函数 输出向量坐标轴'''
    
        def __str__(self):
            return 'Vector: {}'.format(self.coordinates)
       
        # 计算向量长度
        def magnitude(self):
            coordinates_squared = [x**2 for x in self.coordinates]
            return sqrt(sum(coordinates_squared))
    
        # 将向量归一化
        def normalized(self):
            try:
                magnitude = self.magnitude()
                return  Vector([x *1.0/ magnitude for x in self.coordinates])
            except ZeroDivisionError:
                raise Exception('Cannot normalized the zero myVector2')
    
        # 点积
        def dot(self, v):
            return sum([round(x*y,3) for x,y in zip(self.coordinates, v.coordinates)])
       
    
            
        
         # 是否平行
        def vectorType(self, v):
            result = ""
            # print (self.dot(v))
            if self.dot(v) ==0:
                result += "Orthogonal "
            else:
                result += "NoOrthogonal "
            new_cordinates = [y/x for x,y in zip(self.coordinates, v.coordinates)]
            compair = new_cordinates[0]
            for i in new_cordinates:
                if round(compair,3) != round(i,3):
                    result += "NoParaller"
                    return result
            result += "Paraller"
            return result
    
    
    
    v1 = Vector([-7.579, -7.88])
    v2 = Vector([22.737, 23.64])
    print(v1.vectorType(v2))
    
    v3 = Vector([-2.029, 9.97, 4.172])
    v4 = Vector([-9.231, -6.639, -7.245])
    print(v3.vectorType(v4))
    
    v5 = Vector([-2.328,-7.284,-1.214])
    v6 = Vector([-1.821,1.072,-2.94])
    print(v5.vectorType(v6))
    
    
    v7 = Vector([2.118,4.827])
    v8 = Vector([0,0])
    print(v7.vectorType(v8))
    
    
    
    # 输出结果
    # NoOrthogonal Paraller
    # NoOrthogonal NoParaller
    # Orthogonal NoParaller
    # Orthogonal Paraller
    # [Finished in 0.2s]

    优化

    
        # 计算向量长度
        def magnitude(self):
            coordinates_squared = [x**2 for x in self.coordinates]
            return sqrt(sum(coordinates_squared))
    
        # 将向量归一化
        def normalized(self):
            try:
                magnitude = self.magnitude()
                return  Vector([x *1.0/ magnitude for x in self.coordinates])
            except ZeroDivisionError:
                raise Exception('Cannot normalized the zero myVector2')
    
        # 点积
        def dot(self, v):
            # print([x*y for x,y in zip(self.coordinates, v.coordinates)])
            return sum([round(x*y,3) for x,y in zip(self.coordinates, v.coordinates)])
       
    
        # 角度弧度
        def angle_with(self,v,in_degress=False):
            try:
                u1 = self.normalized()
                u2 = v.normalized()
                angle_in_radians = acos(u1.dot(u2))
                if in_degress:
                    degrees_per_radian = 180./pi
                    return angle_in_radians * degrees_per_radian
                else:
                    return angle_in_radians
    
            except Exception as e:
                if str(e) == self.CANNOT_NORMALIZE_ZERO_VECTOR_MSG:
                    raise Exception('Cannot compute an angle with the zero vector')
                else:
                    raise e 
    
       
        def is_orthogonal_to(self, v, tolerance=1e-10):
            return abs(self.dot(v)) < tolerance
    
        def is_paraller_to(self,v):
            return (self.is_zero() or v.is_zero() or self.angle_with(v) ==0 or self.angle_with(v) == pi)
    
        def is_zero(self, tolerance = 1e-10):
            return self.magnitude()< tolerance
    
    v1 = Vector([-7.579, -7.88])
    v2 = Vector([22.737, 23.64])
    print 'is paraller:',v1.is_orthogonal_to(v2)
    print 'is orthogonal:',v1.is_paraller_to(v2)
    
    v3 = Vector([-2.029, 9.97, 4.172])
    v4 = Vector([-9.231, -6.639, -7.245])
    print 'is paraller:',v3.is_orthogonal_to(v4)
    print 'is orthogonal:',v3.is_paraller_to(v4)
    
    v5 = Vector([-2.328,-7.284,-1.214])
    v6 = Vector([-1.821,1.072,-2.94])
    print 'is paraller:',v5.is_orthogonal_to(v6)
    print 'is orthogonal:',v5.is_paraller_to(v6)
    
    v7 = Vector([2.118,4.827])
    v8 = Vector([0,0])
    print 'is paraller:',v7.is_orthogonal_to(v8)
    print 'is orthogonal:',v7.is_paraller_to(v8)
    
    # 输出结果
    # is paraller: False
    # is orthogonal: True
    # is paraller: False
    # is orthogonal: False
    # is paraller: True
    # is orthogonal: False
    # is paraller: True
    # is orthogonal: True
    # [Finished in 0.1s]
    


    展开全文
  • “”" 判断二个三维向量是否平行 “”" assert isinstance(vec1, np.ndarray), r’输入的 vec1 必须为 ndarray 类型’ assert isinstance(vec2, np.ndarray), r’输入的 vec2 必须为 ndarray 类型’ assert vec1....

    背景

    在网上找 python 判断两个向量是否平行,没有找到直接可用的代码。
    于是,写了一个 is_parallel 的函数。

    代码

    import numpy as np
    
    
    def is_parallel(vec1, vec2):
        """ 判断二个三维向量是否平行 """
        assert isinstance(vec1, np.ndarray), r'输入的 vec1 必须为 ndarray 类型'
        assert isinstance(vec2, np.ndarray), r'输入的 vec2 必须为 ndarray 类型'
        assert vec1.shape == vec2.shape, r'输入的参数 shape 必须相同'
    
        vec1_normalized = vec1 / np.linalg.norm(vec1)
        vec2_normalized = vec2 / np.linalg.norm(vec2)
    
        if 1.0 - abs(np.dot(vec1_normalized, vec2_normalized)) < 1e-6:
            return True
        else:
            return False
    
    
    if __name__ == '__main__':
    
        vec1 = np.array([1.0, 0.0, 0.0])
        vec2 = np.array([-1.0, 0.0, 0.0])
        print(is_parallel(vec1, vec2))
    
        vec3 = np.array([0.5, 0.0, 0.0])
        print(is_parallel(vec1, vec3))
    
        vec4 = np.array([0.0, 1.0, 0.0])
        print(is_parallel(vec1, vec4))
    

    测试结果:

    测试用起来,还不错。

    展开全文
  •  正交是垂直的令一种说法,向量正交意味着个向量的夹角是90°。  这可以用直角三角形的三边解释:  当x和y正交时,二者的点积是0,反过来也一样。这个结论在n维空间也适用,当Rn空间内的个向量x和...

    正交向量

      正交是垂直的令一种说法,两个向量正交意味着两个向量的夹角是90°。

      这可以用直角三角形的三边解释:

      当x和y正交时,二者的点积是0,反过来也一样。这个结论在n维空间也适用,当Rn空间内的两个向量x和向量y正交时:

     

      如果x是零向量,xTy还是0,也意味着零向量和任意向量正交。

    正交子空间

      正交性还可以推广到子空间,如果说一个子空间V和另一个子空间W正交,那么V中的每一个向量和W中的每一个向量正交。

      子空间V的正交子空间W也称为V的正交补空间,或V的正交补,记作:

     

    正交与垂直

      以我们比较熟悉的三维空间为例,墙角就可以看作一个典型的空间坐标系,两个墙面和地面两两垂直,每个平面都是三维空间中的二维子空间,这是否意味着子空间的正交呢?并不是这样,两个平面垂直并不等同于两个子空间正交,可以轻易找出两个分属于两个平面但不垂直的向量。实际上,在墙壁与地面的交接处,沿着接缝方向的向量同属于两个平面,但它们不会自己正交与自己,除非是零向量。

      这样看来,“正交是垂直的令一种说法”并不完全准确,实际上,正交一定垂直,垂直不一定正交。

      通过平面的例子可以看出,如果两个子空间交于一个非零向量,那么这两个子空间一定不会正交。换句话说,如果两个子空间正交,它们只能交于零向量(单独的点就是零向量,它没有方向,或者说有任意方向,并且模长为0)。

      在同一个平面中正交的例子有哪些呢?

      回顾一下子空间的定义,如果V是Rn的线性子空间,则V一定满足三个条件:

    1. 包含0向量;
    2. x是V中的一个向量,x和一个标量的乘积也在V中,即数乘封闭性;
    3. a和b是V中的向量,a+b也在V中,即加法封闭性。

      由此可见平面内只有三个子空间:原点、过原点的直线、整个平面。这样一来答案就很清晰了:

    1. 过原点的直线任何时候都不会和整个平面正交;
    2. 原点和所有过原点的直线正交,也和整个平面正交;
    3. 如果两个过原点的向量的点积是0,二者正交。

    四个基本子空间的正交补

      先看行空间如何正交与零空间。零空间的意义是Ax = 0时x的解集:

     

      这样会发现,A中的每个行向量都正交于零空间中的x:

     

      a(i)表示A中的第i行行向量,a(i)x = 0当于一个向量垂直于一个超平面。当然,行空间不仅仅包括这几行,还包括它们的线性组合,只要证明满足加法和数乘封闭性即可:

      列空间相当于A转置后的行空间,道理是一样的,所以列空间也正和零空间正交。

      A是m×n矩阵,四个基本子空间的正交性可以用下图表示,其中r是矩阵的秩:

      这相当于把m维空间分割成两个子空间,n维空间分割成另两个子空间,子空间的维数满足图中的要求。如果用正交补的记法,上图可以看作:

      以三维空间中为例:

     

      A的行向量是线性相关的,A的秩是1,所以行空间是1维的,是一条直线,与之正交的零空间是垂直于行向量的平面,<1, 3, 5>就是这个平面的法向量,由此可以得到平面方程:

       

     


     作者:我是8位的

    出处:http://www.cnblogs.com/bigmonkey

    本文以学习、研究和分享为主,如需转载,请联系本人,标明作者和出处,非商业用途! 

    扫描二维码关注公众号“我是8位的”

    展开全文
  • 一般的课本上都会告诉我们判断两向量是否正交可以通过它们的点积为0判断,那么到底为什么? 向量 一个向量是有方向和长度的,我们记向量\(\overrightarrow{a}\)的长度为\(\left\|a\right\|\),也叫向量的长度为模...
  • 本文始发于个人公众号:TechFlow 向量内积 这个基本上是中学当中数学课本...这里X和Y都是n维的向量向量能够计算内积的前提是向量的维度一样。从上面公式可以看出来,向量的内积就等于向量对应各...
  • 向量正交 与 函数正交

    千次阅读 2018-11-28 13:12:23
    2 向量正交 3 函数的正交 4 函数正交的意义 1 向量内积和外积 1.1 向量内积(点乘) 假设 a = [a1,a2,...,an], b = [b1,b2,...,bn]; 则a与b的内积为 a·b = a1·b1+a2·b2+...+a3·b3 = |a||b|cosθ; ...
  • 在前面文章《矩阵的四个基本子空间》中提到: 一个秩为r,m*n的矩阵A中,其行空间和列空间的维数为r,零空间和左零空间的维数分别为n-r,m-r,...我们首先从我们熟悉的正交向量说起。 1、正交向量 我们都知...
  • 正交向量 引出 1.毕达哥拉斯定理/勾股定理(Pythagoras) 我们很容易得出 ∣∣x∣∣+∣∣y∣∣=∣∣x+y∣∣||x||+||y||=||x+y||∣∣x∣∣+∣∣y∣∣=∣∣x+y∣∣ ...
  • 如何判断两向量是否垂直? 点乘! xTy=0; ||x||2+||y||2=||x+y||2 另一种描述长度的方式 xTx=||x|| 假设x是[1;2;3] y=[2;-1;0] x+y=[3;1;3] ||x||2=14 ||y||2=5 ||x+y||2=19 所以勾股定理也可 xT+yTy=(x+y)T(x+y) ...
  • Let x be a (right) eigenvector of A corresponding to an eigenvalue λ and let y be a left eigenvector of A corresponding to a different eigenvalue µ, where λ ≠ µ. Show that x∗y = 0....
  • 判断两直线正交 平行问题

    千次阅读 2019-08-11 17:32:54
    方法一: 用内积外积判断正交平行时,形参为线段 #include<iostream> #include<cmath> using namespace std; #define EPS (1e-10) #define equals(a, b) (fabs((a) - (b)) < EPS)//实数判断是否为0...
  • 这是一种在 MATLAB 中实现的非常用户友好的 Gram Schmidth 算法。 我已经提交了一个相同算法的文件,但这个比以前更灵活。 希望你会发现它很有用。
  • 定义:设向量a(ax,ay),向量b(bx,by)之间的夹角为θ,(0<=θ<=180) 那么a、b的内积a·b=|a|x|b|cosθ=ax * bx+ay * by(横乘横,加上,纵乘纵) 内积中间是点不是x号 我们通过公式可以看出向量内积后得到的是一个数...
  • 正交向量 在我的博文程序员的自我修养之数学基础02中介绍了向量内积的概念。我们知道,对于 n维向量,其内积为: 仔细观察一下这个表达式,我们不难得出向量内积与矩阵乘法之间的联系: 回顾了向量内积之后,...
  • a向量正交投影到b

    千次阅读 2017-12-11 14:02:41
    1.个向量点乘 2.对一个向量进行乘积 3.向量x乘 4.a向量正交投影到b
  • 线性代数---之正交向量

    千次阅读 2018-01-25 17:47:16
    正交向量”是一个数学术语,指点积为零的个或多个向量。几何向量的概念在线性代数中经由抽象化,得到更一般的向量概念。此处向量定义为向量空间的元素,要注意这些抽象意义上的向量不一定以数对表示,大小和方向...
  • 对称阵有一个很优美的性质:它总能相似对角化,对称阵不同特征值对应的特征向量两两正交。 假设矩阵AA是一个对称矩阵, xix_i和xjx_j 是矩阵AA 的任意个特征向量,λi\lambda_i和λj\lambda_j 是与xix_i和xjx_j ...
  • 函数的正交与向量正交

    千次阅读 2017-02-22 17:20:25
    函数的正交是向量正交概念的推广。 一个函数f(x)可以视之为无穷维向量。 在n维空间中个向量的正交是用内积这个概念来定义的: 设X=(x1,x2,...,xn),Y=(y1,y2,...,yn), 则X与Y正交定义为其内积 X*Y=x1*y1+x2*y2+...
  • 1. 正交向量组的定义 2. 正交的判定 3. 正交向量组必然线性无关,线性无关向量组未必是正交向量组 4. 正交向量组求解示例 5. 标准正交向量组的定义 ...
  • 上篇讲了向量的基本概念和简单的加减运算,这部分的数学运算与几何图形变换之间的联系是非常直观的,理解起来非常容易本篇讲的内容在数学运算与几何图形变换之间的联系不那么直观,需要花功夫反复琢磨运算的数学意义...
  • 正交向量与子空间

    千次阅读 2014-07-08 14:59:57
    关于向量正交(orthogonality vector)我们都已不陌生,正交是垂直的另一种说法,向量正交意味着这个向量的夹角为90度,如果要判断两个向量是否正交,只需对向量作点乘(dot product)相加,即内积,等于0就是...
  • MIT线性代数笔记十四讲 正交向量正交子空间

    千次阅读 多人点赞 2019-08-23 17:33:02
    本节主要讲解正交(orthogonal)概念对于向量、基和子空间的意义。 1. 正交向量 Orthogonal vectors 2. 正交子空间 Orthogonal subspaces 3. 零空间与行空间正交 Nullspace is perpendicular to row space 4. 矩阵A^...
  • 支持向量

    千次阅读 多人点赞 2016-07-18 23:04:15
    支持向量机支持向量机 点到平面的距离 平面的一般式方程 向量的模 向量的内积 点到平面的距离 最优间隔分类器与支持向量 函数间隔和几何间隔 如何确定这个超平面 最大间隔划分超平面 对偶问题 对偶问题转化 对偶问题...
  • 已知矩阵A,在MATLAB界面输入[x,y]=eig(A),可以得到特征值以及特征向量。其中y为对角阵,每个元素为特征值;x的每一列为特征值所对应的特征向量。 需要进行特征向量标准化时,可以输入x(:,1)/norm(x(:,1))将特征...
  • 我作的答疑: 由施密特正交化的过程知,施密特正交化在实对称矩阵对角化中使用,在相同特征值下的特征向量之间使用。实矩阵A可施密特正交化化为对角阵,那么A一定是实对称矩阵,见下图,施密特正交化 施密特正交化是...
  • 这是Strang教授的第十四讲,讲解的内容是正交的概念、四个子空间的正交... 个向量v和w正交意思是向量v垂直于w,那么如何判断向量v和w正交呢?在几何上可以通过判断v和w的夹角为90°,那么在线性代数里是通过计算v...
  • 学到一半发现我不会判断向量的旋转方向,于是我又去学习了一下叉乘。作为蒟蒻的我看了半天看不懂,所以我决定写一个连我这样的蒟蒻都能看得懂的便于理解的指北(雾)。 先上结论:对于根向量a(x1,y1),b(x2,y2),...
  • matlab-线性代数 施密特正交

    千次阅读 2019-02-21 23:41:00
    n=input('想看第几个正交向量组的向量呢:') b(:,n)   result a = 1 -1 1 1 2 4 3 -1 a1 = 1 1 2 3 想看第几个正交向量组的向量呢:2 n = 2 ans = -0.3333 -0.3333 -0.6667 -1....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,647
精华内容 3,058
关键字:

判断两向量是否正交