C语言如何实现两向量叉乘

Python013

C语言如何实现两向量叉乘,第1张

根据叉乘的计算方法可知

因此可直接通过计算三阶行列式的方法来计算两向量的叉乘

#include<stdio.h>

void cp()

{

double a,b,c,d,e,f,x,y,z

printf("请输入向量a:")

scanf("%lf %lf %lf",&a,&b,&c)

printf("请输入向量b:")

scanf("%lf %lf %lf",&d,&e,&f)

x=b*f-c*e//计算三阶行列式

y=c*d-a*f

z=a*e-b*d

printf("aXb=(%lf %lf %lf)\n",x,y,z)/

}

int main()

{

cp()

return 0

}

运行结果如下:

//数值计算程序-特征值和特征向量

//////////////////////////////////////////////////////////////

//约化对称矩阵为三对角对称矩阵

//利用Householder变换将n阶实对称矩阵约化为对称三对角矩阵

//a-长度为n*n的数组,存放n阶实对称矩阵

//n-矩阵的阶数

//q-长度为n*n的数组,返回时存放Householder变换矩阵

//b-长度为n的数组,返回时存放三对角阵的主对角线元素

//c-长度为n的数组,返回时前n-1个元素存放次对角线元素

void eastrq(double a[],int n,double q[],double b[],double c[])

//////////////////////////////////////////////////////////////

//求实对称三对角对称矩阵的全部特征值及特征向量

//利用变型QR方法计算实对称三对角矩阵全部特征值及特征向量

//n-矩阵的阶数

//b-长度为n的数组,返回时存放三对角阵的主对角线元素

//c-长度为n的数组,返回时前n-1个元素存放次对角线元素

//q-长度为n*n的数组,若存放单位矩阵,则返回实对称三对角矩阵的特征向量组

// 若存放Householder变换矩阵,则返回实对称矩阵A的特征向量组

//a-长度为n*n的数组,存放n阶实对称矩阵

int ebstq(int n,double b[],double c[],double q[],double eps,int l)

//////////////////////////////////////////////////////////////

//约化实矩阵为赫申伯格(Hessen berg)矩阵

//利用初等相似变换将n阶实矩阵约化为上H矩阵

//a-长度为n*n的数组,存放n阶实矩阵,返回时存放上H矩阵

//n-矩阵的阶数

void echbg(double a[],int n)

//////////////////////////////////////////////////////////////

//求赫申伯格(Hessen berg)矩阵的全部特征值

//返回值小于0表示超过迭代jt次仍未达到精度要求

//返回值大于0表示正常返回

//利用带原点位移的双重步QR方法求上H矩阵的全部特征值

//a-长度为n*n的数组,存放上H矩阵

//n-矩阵的阶数

//u-长度为n的数组,返回n个特征值的实部

//v-长度为n的数组,返回n个特征值的虚部

//eps-控制精度要求

//jt-整型变量,控制最大迭代次数

int edqr(double a[],int n,double u[],double v[],double eps,int jt)

//////////////////////////////////////////////////////////////

//求实对称矩阵的特征值及特征向量的雅格比法

//利用雅格比(Jacobi)方法求实对称矩阵的全部特征值及特征向量

//返回值小于0表示超过迭代jt次仍未达到精度要求

//返回值大于0表示正常返回

//a-长度为n*n的数组,存放实对称矩阵,返回时对角线存放n个特征值

//n-矩阵的阶数

//u-长度为n*n的数组,返回特征向量(按列存储)

//eps-控制精度要求

//jt-整型变量,控制最大迭代次数

int eejcb(double a[],int n,double v[],double eps,int jt)

//////////////////////////////////////////////////////////////

选自<<徐世良数值计算程序集(C)>>

每个程序都加上了适当地注释,陆陆续续干了几个月才整理出来的啊。

今天都给贴出来了

#include "stdio.h"

#include "math.h"

//约化对称矩阵为三对角对称矩阵

//利用Householder变换将n阶实对称矩阵约化为对称三对角矩阵

//a-长度为n*n的数组,存放n阶实对称矩阵

//n-矩阵的阶数

//q-长度为n*n的数组,返回时存放Householder变换矩阵

//b-长度为n的数组,返回时存放三对角阵的主对角线元素

//c-长度为n的数组,返回时前n-1个元素存放次对角线元素

叉乘,也叫向量的外积、向量积。顾名思义,求下来的结果是一个向量,记这个向量为c。

|向量c|=|向量a×向量b|=|a||b|sin<a,b>

向量c的方向与a,b所在的平面垂直,且方向要用“右手法则”判断(用右手的四指先表示向量a的方向,然后手指朝着手心的方向摆动到向量b的方向,大拇指所指的方向就是向量c的方向)。

因此

向量的外积不遵守乘法交换率,因为向量a×向量b= -

向量b×向量a

在物理学中,已知力与力臂求力矩,就是向量的外积,即叉乘。

将向量用坐标表示(三维向量),

若向量a=(a1,b1,c1),向量b=(a2,b2,c2),

向量a×向量b=

| i j k |

|a1 b1 c1|

|a2 b2 c2|

=(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)

(i、j、k分别为空间中相互垂直的三条坐标轴的单位向量)。

数学中,既有大小又有方向且遵循平行四边形法则的量叫做向量(vector)。

向量

向量

有方向与大小,分为自由向量与固定向量。

数学中,把只有大小但没有方向的量叫做数量,物理中称为标量。例如距离、质量、密度、温度等。

注:在线性代数中(实数空间/复数空间)的向量是指n个实数/复数组成的有序数组,称为n维向量。α=(a1,a2,…,an) 称为n维向量。其中ai称为向量α的第i个分量。

("a1"的"1"为a的下标,"ai"的"i"为a的下标,其他类推)

在编程语言中,也存在向量。向量有起点,有方向。常用一个带箭头的线段表示。