//很簡單,你對照一下吧。。。#include stdio.h
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、重慶小程序開發(fā)公司、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了昌寧免費建站歡迎大家使用!
#include math.h
void main()
{
int i,sum=0,p[3]={1,2,3},p1[3]={2,3,4},flag=1;
double model=0,model1=0,temp;
for(i=0;i3;i++)
{sum+=p[i]*p1[i];
model+=p[i]*p[i];
model1+=p1[i]*p1[i];
}
model=sqrt(model);
model1=sqrt(model1);
printf("向量p,p1的積: %d\n",sum);
printf("p,p1的模為:%lf %lf\n",model,model1);
temp=p[0]/p1[0];
if((p[1]*1.0/p1[1]-temp=1e-3) (p[2]*1.0/p1[2]-temp=1e-3))
flag=0;
if(flag)
printf("兩向量共線!");
else
printf("不共線");
}
//數(shù)值計算程序-特征值和特征向量
//////////////////////////////////////////////////////////////
//約化對稱矩陣為三對角對稱矩陣
//利用Householder變換將n階實對稱矩陣約化為對稱三對角矩陣
//a-長度為n*n的數(shù)組,存放n階實對稱矩陣
//n-矩陣的階數(shù)
//q-長度為n*n的數(shù)組,返回時存放Householder變換矩陣
//b-長度為n的數(shù)組,返回時存放三對角陣的主對角線元素
//c-長度為n的數(shù)組,返回時前n-1個元素存放次對角線元素
void eastrq(double a[],int n,double q[],double b[],double c[]);
//////////////////////////////////////////////////////////////
//求實對稱三對角對稱矩陣的全部特征值及特征向量
//利用變型QR方法計算實對稱三對角矩陣全部特征值及特征向量
//n-矩陣的階數(shù)
//b-長度為n的數(shù)組,返回時存放三對角陣的主對角線元素
//c-長度為n的數(shù)組,返回時前n-1個元素存放次對角線元素
//q-長度為n*n的數(shù)組,若存放單位矩陣,則返回實對稱三對角矩陣的特征向量組
// 若存放Householder變換矩陣,則返回實對稱矩陣A的特征向量組
//a-長度為n*n的數(shù)組,存放n階實對稱矩陣
int ebstq(int n,double b[],double c[],double q[],double eps,int l);
//////////////////////////////////////////////////////////////
//約化實矩陣為赫申伯格(Hessen berg)矩陣
//利用初等相似變換將n階實矩陣約化為上H矩陣
//a-長度為n*n的數(shù)組,存放n階實矩陣,返回時存放上H矩陣
//n-矩陣的階數(shù)
void echbg(double a[],int n);
//////////////////////////////////////////////////////////////
//求赫申伯格(Hessen berg)矩陣的全部特征值
//返回值小于0表示超過迭代jt次仍未達到精度要求
//返回值大于0表示正常返回
//利用帶原點位移的雙重步QR方法求上H矩陣的全部特征值
//a-長度為n*n的數(shù)組,存放上H矩陣
//n-矩陣的階數(shù)
//u-長度為n的數(shù)組,返回n個特征值的實部
//v-長度為n的數(shù)組,返回n個特征值的虛部
//eps-控制精度要求
//jt-整型變量,控制最大迭代次數(shù)
int edqr(double a[],int n,double u[],double v[],double eps,int jt);
//////////////////////////////////////////////////////////////
//求實對稱矩陣的特征值及特征向量的雅格比法
//利用雅格比(Jacobi)方法求實對稱矩陣的全部特征值及特征向量
//返回值小于0表示超過迭代jt次仍未達到精度要求
//返回值大于0表示正常返回
//a-長度為n*n的數(shù)組,存放實對稱矩陣,返回時對角線存放n個特征值
//n-矩陣的階數(shù)
//u-長度為n*n的數(shù)組,返回特征向量(按列存儲)
//eps-控制精度要求
//jt-整型變量,控制最大迭代次數(shù)
int eejcb(double a[],int n,double v[],double eps,int jt);
//////////////////////////////////////////////////////////////
選自徐世良數(shù)值計算程序集(C)
每個程序都加上了適當?shù)刈⑨專戧懤m(xù)續(xù)干了幾個月才整理出來的啊。
今天都給貼出來了
#include "stdio.h"
#include "math.h"
//約化對稱矩陣為三對角對稱矩陣
//利用Householder變換將n階實對稱矩陣約化為對稱三對角矩陣
//a-長度為n*n的數(shù)組,存放n階實對稱矩陣
//n-矩陣的階數(shù)
//q-長度為n*n的數(shù)組,返回時存放Householder變換矩陣
//b-長度為n的數(shù)組,返回時存放三對角陣的主對角線元素
//c-長度為n的數(shù)組,返回時前n-1個元素存放次對角線元素
看沒人幫你做,我?guī)湍銓懓?
#includestdio.h
int?main()
{
int?n,i;
double?a[105],b[105],sum?=?0;
printf("輸入向量的維數(shù):");
scanf("%d",n);
printf("輸入A向量:");
for(i?=?0;in;i++)?scanf("%lf",a[i]);
printf("輸入b向量:");
for(i?=?0;in;i++)?scanf("%lf",b[i]);
for(i??=0;in;i++)?sum?+=?a[i]*b[i];
printf("A·B?=?%lf\n",sum);
return?0;
}
vectorProduct 這個函數(shù)寫的有問題, 看函數(shù)的實現(xiàn), length應該是指數(shù)組vecB和vecB中的數(shù)據(jù)個數(shù), 但是在函數(shù)里明明已經寫了是3, 這個參數(shù)就是多余的, 它只能等于3.
另外, 這個程序為了表示是3維向量, 定義了一個常數(shù)#define VECSIZE 3
但是在這里又直接寫3, 不一致.
這樣雖然不會出錯, 但是給理解造成困惑.
vectorNorm 也一樣.
double x[VECSIZE] = {0.0,1.0,0.0};
這個是這里作為示例, 求兩個向量的夾角的第一個向量的變量,
變量名是x, 而不是X軸, 而這個向量是y軸的,
這樣同樣是容易讓人困惑, 下面的y同理.
這樣, 整個程序的含義是:
函數(shù) vectorProduct求兩個向量的點積
函數(shù) vectorNorm 求向量的模(長度)
main函數(shù)是示例:
定義了x和y兩個向量,
用vectorNorm分別求出兩個向量的模, xNorm, yNorm
用vectorProduct求出兩個向量的叉積, 然后除以兩個向量的模, 得到夾角的余弦值, cos_phi
用acos反余弦求出兩個向量的夾角(單位弧度), 然后換算成角度為單位, cos_phi