?? 征求求實矩陣特征值和相應(yīng)特征向量的c程序(可另開貼子加分).htm
字號:
<!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>征求求實矩陣特征值和相應(yīng)特征向量的c程序(可另開貼子加分)</TITLE>
<SCRIPT src="征求求實矩陣特征值和相應(yīng)特征向量的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">當(dāng)前索引</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>征求求實矩陣特征值和相應(yīng)特征向量的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>
征求求任意實矩陣特征值和相應(yīng)特征向量的c程序。如果完成以下兩點中任意一點,相當(dāng)于完成本問題:
1、將任意實矩陣初等相似變換為實對稱陣;或
2、求出齊次線性方程組無數(shù)解中的任意一組。
求求各位大哥哥大姐姐,拉小弟一把。最好附有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>回復(fù)人:<B>
saint001(saint001) </B></FONT><FONT color=#000000>( ) 信譽(yù):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>
我現(xiàn)在用Numerical Recipes in C程序庫做了求矩陣特征值的程序,不過特征向量還沒有求出來
這個c的程序庫感覺要比matlab用的fortran的那幾個好用,畢竟是c的,并且有pdf格式的Numerical Recipes in C這本書下載,非常好
但功能不是很強(qiáng),比如化為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>回復(fù)人:<B>
saint001(saint001) </B></FONT><FONT color=#000000>( ) 信譽(yù):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>
先把求特征值的主程序發(fā)上來
#include <math.h>
#include <alloc.h>
#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}};/*這里矩陣無需對稱,若對稱,則特征值均為實數(shù)*/
double **a;
double wr[N+1],wi[N+1];/*特征值的實部和虛部*/
int i,j;
a=(double **) malloc((unsigned) (N+1)*sizeof(double*));
for(i=0;i<=N;i++)
a[i]=b[i]; /*賦值完畢*/
printf("Original A:\n");
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
printf("%f ",a[i][j]);
printf("\n");
}
elmhes(a,N); /*變換至上Hessenburg型,特征值不變*/
printf("After Elmhes:\n");
for(i=1;i<=N;i++)
for(j=1;j<(i-1);j++)
a[i][j]=0;
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
printf("%f ",a[i][j]);
printf("\n");
}
hqr(a,N,wr,wi);/*用QR方法求上Hessenburg型矩陣的特征值*/
printf("Eigenvalue:\n");
for(i=1;i<=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>回復(fù)人:<B>
saint001(saint001) </B></FONT><FONT color=#000000>( ) 信譽(yù):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 <math.h>
#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<n;m++) {
x=0.0;
i=m;
for (j=m;j<=n;j++) {
if (fabs(a[j][m-1]) > fabs(x)) {
x=a[j][m-1];
i=j;
}
}
if (i != m) {
for (j=m-1;j<=n;j++) SWAP(a[i][j],a[m][j])
for (j=1;j<=n;j++) SWAP(a[j][i],a[j][m])
}
if (x) {
for (i=m+1;i<=n;i++) {
if (y=a[i][m-1]) {
y /= x;
a[i][m-1]=y;
for (j=m;j<=n;j++)
a[i][j] -= y*a[m][j];
for (j=1;j<=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>回復(fù)人:<B>
baizhao(云散) </B></FONT><FONT color=#000000>( ) 信譽(yù):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:
我的情況可你一樣,我現(xiàn)在已經(jīng)能夠很好地把任意實矩陣化為Hessenburg矩陣,然后求出特征值,但是,求不出特征向量,因為實際上這是求齊次線性方程無數(shù)解中的一個,我就差這一步。
</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>回復(fù)人:<B>
saint001(saint001) </B></FONT><FONT color=#000000>( ) 信譽(yù):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&bid=2005167&s=0&bname=user_saint001
不知能不能看到
我這幾天要數(shù)末
</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>回復(fù)人:<B>
saint001(saint001) </B></FONT><FONT color=#000000>( ) 信譽(yù):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++編譯的
不過發(fā)上去連個格式都沒有了
不太好看
另外可能用指針的地方可以優(yōu)化
我不再做了
</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>回復(fù)人:<B>
baizhao(云散) </B></FONT><FONT color=#000000>( ) 信譽(yù):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>
謝謝,我已經(jīng)看到了,不知能不能用,我試一下,不管如何,我過兩天就把分給你。對了,你是否需要建模的資料,我參加過大學(xué)、全國、美國的建模競賽,有一些積累,有興趣發(fā)郵件給我: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>回復(fù)人:<B>
saint001(saint001) </B></FONT><FONT color=#000000>( ) 信譽(yù):105
</FONT></TD>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -