//數值計算程序-特征值和特征向量
創新互聯公司專注于畢節企業網站建設,響應式網站設計,成都做商城網站。畢節網站建設公司,為畢節等地區提供建站服務。全流程按需定制,專業設計,全程項目跟蹤,創新互聯公司專業和態度為您提供的服務
//////////////////////////////////////////////////////////////
//約化對稱矩陣為三對角對稱矩陣
//利用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個元素存放次對角線元素
#includestdio.h
void matrix(int a[][100],int a1,int a2,int b[][100],int b1,int b2,int c[][100])
{
int i,j,k;
if(a2!=b1)
{
printf("矩陣的維數錯了!\n");
return;
}
for(i=0;ia1;i++)
{
for(j=0;jb2;j++)
{
c[i][j]=0;
for(k=0;ka2;k++)
c[i][j]+=a[i][k]*b[k][j];
}
}
}
int main()
{
int a1,a2,b1,b2,a[100][100],b[100][100],c[100][100],i,j;
printf("輸入矩陣一的行數和列數(不超過100):\n");
scanf("%d%d",a1,a2);
for(i=0;ia1;i++)
{
for(j=0;ja2;j++)
scanf("%d",a[i][j]);
}
printf("輸入矩陣一的行數和列數(不超過100):\n");
scanf("%d%d",b1,b2);
for(i=0;ib1;i++)
{
for(j=0;jb2;j++)
scanf("%d",b[i][j]);
}
matrix(a,a1,a2,b,b1,b2,c);
printf("結果:\n");
for(i=0;ia1;i++)
{
for(j=0;jb2;j++)
printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}
根據叉乘的計算方法可知
因此可直接通過計算三階行列式的方法來計算兩向量的叉乘
#includestdio.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;
}
運行結果如下:
#include"stdio.h"
main()
{
int i,j,a[3][1],b[1][3],c[3][3];//定義三個矩陣
printf("請輸入矩陣a[3][1]:\n");
for(i=0;i3;i++)
scanf("%d",a[i][0]);//輸入3*1矩陣
printf("請輸入矩陣b[1][3]:\n");
for(i=0;i3;i++)
scanf("%d",b[0][i]);//輸入1*3矩陣
for(i=0;i3;i++)
for(j=0;j3;j++)
c[i][j]=a[i][0]*b[0][j];//計算2個矩陣的叉乘,并存入c[3][3]
printf("a[3][1]*b[1][3]的結果是:\n");
for(i=0;i3;i++)
{
for(j=0;j3;j++)
printf("%6d ",c[i][j]);//輸出結果
printf("\n");
}
getchar();
getchar();
getchar();
}
分享題目:c語言編寫一個函數的叉乘 c++叉乘
網站地址:http://m.kartarina.com/article38/dodsspp.html
成都網站建設公司_創新互聯,為您提供商城網站、外貿網站建設、自適應網站、標簽優化、網站策劃、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯