文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发其他语言数值计算程序大放送-特征值和特征向量
精品推荐
特别推荐
·控制面板知多少
·给你十条学习Ruby语言的理由
·分页管理机制
·Perl 语言的重要价值体现
·经验技巧:分享两条Delphi开发经验
·Java编程思想:面向对象的逻辑思维方法
·Samba系统简介
热点TOP10
·AIX 5L 学习大纲/简易教程(2)(未经许可,请勿COPY)
·DENX U-Boot及Linux使用手册
·EZ-USB 68013A开发指南
·图象处理中的边缘检测------canny算子
·Visual C++ ADO数据库编程入门
·利用 wordXP 实现自动排班
·UDT协议-基于UDP的可靠数据传输协议
·XPCOM--LINUX下的组件开发技术
·MyEclipse JSF 快速入门中文版(上)
·samba和openldap结合实战
·AIX 5L 学习大纲/简易教程(1)(未经许可,请勿COPY)
·Microsoft Windows XP Embedded 开发工具概述
·eMbedded Visual C++开发入门
·在VC6中创建wxWidgets项目[附图]
·数值计算程序大放送-线性代数方程组
·列表视图控件
·visual studio 2005 简体中文团队开发版 SQL server 2005简体中文版下载
·Visual Studio 2005:在 Visual C++ 中开发自定义的绘图控件
·汇编语言工具下载
·多文档界面(MDI)

数值计算程序大放送-特征值和特征向量

日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]


数值计算程序大放送-特征值和特征向量

//////////////////////////////////////////////////////////////
//约化对称矩阵为三对角对称矩阵
//利用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个元素存放次对角线元素
void eastrq(double a[],int n,double q[],double b[],double c[])
{
int i,j,k,u,v;
    double h,f,g,h2;
    for (i=0; i<=n-1; i++)
{
  for (j=0; j<=n-1; j++)
  {
   u=i*n+j; q[u]=a[u];
  }
}
    for (i=n-1; i>=1; i--)
{
  h=0.0;
        if (i>1)
  {
   for (k=0; k<=i-1; k++)
            {
    u=i*n+k;
    h=h+q[u]*q[u];
   }
  }
  
        if (h+1.0==1.0)
  {
   c[i-1]=0.0;
            if (i==1)
   {
    c[i-1]=q[i*n+i-1];
   }
            b[i]=0.0;
  }
        else
  {
   c[i-1]=sqrt(h);
            u=i*n+i-1;
            if (q[u]>0.0)
   {
    c[i-1]=-c[i-1];
   }
            h=h-q[u]*c[i-1];
            q[u]=q[u]-c[i-1];
            f=0.0;
            for (j=0; j<=i-1; j++)
   {
    q[j*n+i]=q[i*n+j]/h;
                g=0.0;
                for (k=0; k<=j; k++)
    {
     g=g+q[j*n+k]*q[i*n+k];
    }
                if (j+1<=i-1)
    {
     for (k=j+1; k<=i-1; k++)
     {
      g=g+q[k*n+j]*q[i*n+k];
     }
    }
                c[j-1]=g/h;
                f=f+g*q[j*n+i];
   }
            h2=f/(h+h);
            for (j=0; j<=i-1; j++)
   {
    f=q[i*n+j];
                g=c[j-1]-h2*f;
                c[j-1]=g;
                for (k=0; k<=j; k++)
    {
     u=j*n+k;
                    q[u]=q[u]-f*c[k-1]-g*q[i*n+k];
    }
   }
            b[i]=h;
  }
}
    b[0]=0.0;
    for (i=0; i<=n-1; i++)
{
  if ((b[i]!=0.0)&&(i-1>=0))
  {
   for (j=0; j<=i-1; j++)
            {
    g=0.0;
    for (k=0; k<=i-1; k++)
    {
     g=g+q[i*n+k]*q[k*n+j];
    }
    for (k=0; k<=i-1; k++)
                {
     u=k*n+j;
     q[u]=q[u]-g*q[k*n+i];
                }
            }
  }
        u=i*n+i;
        b[i]=q[u];
  q[u]=1.0;
        if (i-1>=0)
  {
   for (j=0; j<=i-1; j++)
            {
    q[i*n+j]=0.0;
    q[j*n+i]=0.0;
   }
  }
}
    return;


[1] [2] [3] [4] [5] [6] 下一页 




上一篇:数值计算程序大放送-线性代数方程组

下一篇:数值计算程序大放送-矩阵运算

数值计算程序大放送-特征值和特征向量 相关文章:
·“黑客”教你如何远程控制计算机
·计算机启动更快的十五大绝招
·IE浏览器再现严重安全漏洞 微软紧急发补丁程序
·我是怎么进入他人计算机的
·电子书籍下载大放送
·免费领养QQ空间五级花最新技巧及代码放送
·经典常见计算机密码破解实用手册
·C#编写的windows计算器-源代码
·不用任何软件(木马程序)盗取账号密码
·史上最全的QQ技巧整合大放送
数值计算程序大放送-特征值和特征向量 相关软件:
·计算机基础知识教程
·C语言程序设计
·Windows环境下32位汇编语言程序设计
·高级计算机网络
·深入理解计算机系统电子杂志 PDF
·FLASH个人简历源程序(FLA)
·C语言程序设计视频教程 CSF 教材:谭浩强《c程序设计》
·零起点教你如何破解软件和制作注册机 and 视频+程序
·Sim Aquarium v2.06 -非常漂亮的海底世界屏幕保护程序
·硅谷 C++程序设计视频教程 齐幼菊

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot