⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 征求求实矩阵特征值和相应特征向量的c程序(可另开贴子加分).htm

📁 数值计算方法
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0050)http://book.chinaz.com/CSDN/phppost10/php81380.htm -->
<HTML><HEAD><TITLE>征求求实矩阵特征值和相应特征向量的c程序(可另开贴子加分)</TITLE>
<SCRIPT src="征求求实矩阵特征值和相应特征向量的c程序(可另开贴子加分).files/1.js"></SCRIPT>

<META http-equiv=Content-Type content="text/html; charset=GB2312">
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0">
<CENTER>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TD align=right>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" align=right border=0>
        <TBODY>
        <TR>
          <TD colSpan=2><A 
            href="http://book.chinaz.com/CSDN/index.html">返回首页</A> - <A 
            href="http://book.chinaz.com/CSDN/index.htm">当前索引</A> - </TD></TR>
        <TR>
          <TD colSpan=2 height=15></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD align=left>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD vAlign=top align=right width=100>主  题:</TD>
          <TD align=right width=5></TD>
          <TD><PRE>征求求实矩阵特征值和相应特征向量的c程序(可另开贴子加分)</PRE></TD></TR>
        <TR bgColor=#666666>
          <TD colSpan=3 height=1></TD></TR>
        <TR height=10>
          <TD align=right></TD>
          <TD align=right></TD>
          <TD></TD></TR></TBODY></TABLE></TD></TR>
  <TR>
    <TD><PRE>
征求求任意实矩阵特征值和相应特征向量的c程序。如果完成以下两点中任意一点,相当于完成本问题:
1、将任意实矩阵初等相似变换为实对称阵;或
2、求出齐次线性方程组无数解中的任意一组。
求求各位大哥哥大姐姐,拉小弟一把。最好附有c,c++的源程序。
</PRE></TD></TR>
  <TR>
    <TD>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            saint001(saint001) </B></FONT><FONT color=#000000>( ) 信誉:105 
          </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>2002-09-18 
            10:45:04Z </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT 
            color=#000000>100</FONT> </TD></TR>
        <TR>
          <TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR>
        <TR>
          <TD><FONT color=#ffffff>?</FONT></TD>
          <TD colSpan=3><PRE>
我现在用Numerical Recipes in C程序库做了求矩阵特征值的程序,不过特征向量还没有求出来
这个c的程序库感觉要比matlab用的fortran的那几个好用,毕竟是c的,并且有pdf格式的Numerical Recipes in C这本书下载,非常好
但功能不是很强,比如化为Hessenburg阵后它的子程序只能求出特征值,而没有给出特征向量
对于对称矩阵,它给出的求解特征值和特征向量的方法还是Jacobi法
</PRE></TD></TR>
        <TR>
          <TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A 
            href="http://book.chinaz.com/CSDN/phppost10/php81380.htm#top"><FONT 
            color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            saint001(saint001) </B></FONT><FONT color=#000000>( ) 信誉:105 
          </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>2002-09-18 
            11:11:53Z </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT 
            color=#000000>0</FONT> </TD></TR>
        <TR>
          <TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR>
        <TR>
          <TD><FONT color=#ffffff>?</FONT></TD>
          <TD colSpan=3><PRE>
先把求特征值的主程序发上来
#include &lt;math.h&gt;
#include &lt;alloc.h&gt;
#include "c\elmhes.c"
#include "c\hqr.c"
#define N 3

void main()
{
	double b[N+1][N+1]={{0,0,0,0},{0,3,1,-1},{0,2,2,-1},{0,2,2,0}};/*这里矩阵无需对称,若对称,则特征值均为实数*/
	double **a;
	double wr[N+1],wi[N+1];/*特征值的实部和虚部*/
	int i,j;
	a=(double **) malloc((unsigned) (N+1)*sizeof(double*));
	for(i=0;i&lt;=N;i++)
		a[i]=b[i]; /*赋值完毕*/

	printf("Original A:\n");
    for(i=1;i&lt;=N;i++)
	{
		for(j=1;j&lt;=N;j++)
			printf("%f  ",a[i][j]);
		printf("\n");
	}


	elmhes(a,N); /*变换至上Hessenburg型,特征值不变*/
	printf("After Elmhes:\n");
	for(i=1;i&lt;=N;i++)
		for(j=1;j&lt;(i-1);j++)
			a[i][j]=0;

	for(i=1;i&lt;=N;i++)
	{
		for(j=1;j&lt;=N;j++)
			printf("%f  ",a[i][j]);
		printf("\n");
	}

	hqr(a,N,wr,wi);/*用QR方法求上Hessenburg型矩阵的特征值*/
	printf("Eigenvalue:\n");
	for(i=1;i&lt;=N;i++)
		printf("%f + %f * i\n",wr[i],wi[i]);


</PRE></TD></TR>
        <TR>
          <TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A 
            href="http://book.chinaz.com/CSDN/phppost10/php81380.htm#top"><FONT 
            color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            saint001(saint001) </B></FONT><FONT color=#000000>( ) 信誉:105 
          </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>2002-09-18 
            11:14:04Z </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT 
            color=#000000>0</FONT> </TD></TR>
        <TR>
          <TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR>
        <TR>
          <TD><FONT color=#ffffff>?</FONT></TD>
          <TD colSpan=3><PRE>
其中(修改过的)c\elmhes.c为
#include &lt;math.h&gt;

#define SWAP(g,h) {y=(g);(g)=(h);(h)=y;}

void elmhes(a,n)
double **a;
int n;
{
	int m,j,i;
	double y,x;

	for (m=2;m&lt;n;m++) {
		x=0.0;
		i=m;
		for (j=m;j&lt;=n;j++) {
			if (fabs(a[j][m-1]) &gt; fabs(x)) {
				x=a[j][m-1];
				i=j;
			}
		}
		if (i != m) {
			for (j=m-1;j&lt;=n;j++) SWAP(a[i][j],a[m][j])
			for (j=1;j&lt;=n;j++) SWAP(a[j][i],a[j][m])
		}
		if (x) {
			for (i=m+1;i&lt;=n;i++) {
				if (y=a[i][m-1]) {
					y /= x;
					a[i][m-1]=y;
					for (j=m;j&lt;=n;j++)
						a[i][j] -= y*a[m][j];
					for (j=1;j&lt;=n;j++)
						a[j][m] += y*a[j][i];
				}
			}
		}
	}
}
</PRE></TD></TR>
        <TR>
          <TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A 
            href="http://book.chinaz.com/CSDN/phppost10/php81380.htm#top"><FONT 
            color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            baizhao(云散) </B></FONT><FONT color=#000000>( ) 信誉:100 </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>2002-09-19 
            20:37:37Z </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT 
            color=#000000>0</FONT> </TD></TR>
        <TR>
          <TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR>
        <TR>
          <TD><FONT color=#ffffff>?</FONT></TD>
          <TD colSpan=3><PRE>
To Saint001:
我的情况可你一样,我现在已经能够很好地把任意实矩阵化为Hessenburg矩阵,然后求出特征值,但是,求不出特征向量,因为实际上这是求齐次线性方程无数解中的一个,我就差这一步。
</PRE></TD></TR>
        <TR>
          <TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A 
            href="http://book.chinaz.com/CSDN/phppost10/php81380.htm#top"><FONT 
            color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            saint001(saint001) </B></FONT><FONT color=#000000>( ) 信誉:105 
          </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>2002-09-20 
            08:26:23Z </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT 
            color=#000000>0</FONT> </TD></TR>
        <TR>
          <TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR>
        <TR>
          <TD><FONT color=#ffffff>?</FONT></TD>
          <TD colSpan=3><PRE>
全部做出来了
整个程序在
http://wwwbbs.chinaren.com/read_post.php3?pid=144473&amp;bid=2005167&amp;s=0&amp;bname=user_saint001
不知能不能看到
我这几天要数末
</PRE></TD></TR>
        <TR>
          <TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A 
            href="http://book.chinaz.com/CSDN/phppost10/php81380.htm#top"><FONT 
            color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            saint001(saint001) </B></FONT><FONT color=#000000>( ) 信誉:105 
          </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>2002-09-20 
            10:34:53Z </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT 
            color=#000000>0</FONT> </TD></TR>
        <TR>
          <TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR>
        <TR>
          <TD><FONT color=#ffffff>?</FONT></TD>
          <TD colSpan=3><PRE>
vc++编译的
不过发上去连个格式都没有了
不太好看
另外可能用指针的地方可以优化
我不再做了
</PRE></TD></TR>
        <TR>
          <TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A 
            href="http://book.chinaz.com/CSDN/phppost10/php81380.htm#top"><FONT 
            color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            baizhao(云散) </B></FONT><FONT color=#000000>( ) 信誉:100 </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>2002-09-21 
            18:50:11Z </FONT></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#000000>得分:</FONT><FONT 
            color=#000000>0</FONT> </TD></TR>
        <TR>
          <TD bgColor=#0066cc colSpan=4 height=1></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR>
        <TR>
          <TD><FONT color=#ffffff>?</FONT></TD>
          <TD colSpan=3><PRE>
谢谢,我已经看到了,不知能不能用,我试一下,不管如何,我过两天就把分给你。对了,你是否需要建模的资料,我参加过大学、全国、美国的建模竞赛,有一些积累,有兴趣发邮件给我:baizhao@263.net,以后多交流。
再次感谢。
                                         baizhao
</PRE></TD></TR>
        <TR>
          <TD align=right colSpan=4 height=10><FONT color=#ff6633><B><A 
            href="http://book.chinaz.com/CSDN/phppost10/php81380.htm#top"><FONT 
            color=#3366cc>Top</FONT></A></B></FONT></TD></TR>
        <TR>
          <TD colSpan=4 height=5></TD></TR></TBODY></TABLE>
      <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD width=10 bgColor=#f1f5fa></TD>
          <TD bgColor=#f1f5fa height=25><FONT color=#3366cc>回复人:<B> 
            saint001(saint001) </B></FONT><FONT color=#000000>( ) 信誉:105 
          </FONT></TD>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -