#include <stdio.h>
#include <conio.h>
#include <alloc.h>
#include <镇迹math.h>
#define N 100
float *GauseSeidel(float *a,int n)
{
int i,j,nu=0
float *x,dx
x=(float *)malloc(n*sizeof(float))
for(i=0i <=n-1i++)
x[i]=0.0
do
{
for(i=0i <=n-1i++)
{
float d=0.0
for(j=0j <=n-1j++)
d+=*(a+i*(n+1)+j)*x[j]
dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i))
x[i]+=dx
}
if(nu>=N)
{
printf( "迭代发散\n ")
exit(1)
}
nu++
}
while(fabs(dx)>孙旅老 1e-6)
return x
}
main()
{
int i
float *x
float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1}
float *GauseSeidel(float *,int)
x=GauseSeidel(c,3)
clrscr()
for(i=0i <=2i++)
printf( "x[%d]=%f\n ",i,x[i])
getch()
}
1.1、 BLAS是一个涉及基本线性代数 *** 作的数学函数标准,BLAS一般分为三级。第一级,主要完成向量与向量或者向量与标量以及范数之间的运算。第二级,主要雀腊老涉及矩阵与向量之间的 *** 作。第三级主要涉及矩阵与矩阵之局肢间的 *** 作。
1.2、 BLAS中的术顷升语释义
1. 解: |A-λE|=2-λ 2 -2
2 5-λ -4
-2 -4 5-λ
r3+r2 (消0的同时, 还能提出公因子, 这是最好山袭逗的结果)
2-λ 2 -2
2 5-λ -4
0 1-λ 1-λ
c2-c3
2-λ 4 -2
2 9-λ -4
0 0 1-λ
= (1-λ)[(2-λ)(9-λ)-8]
= (1-λ)(λ^2-11λ+10)
= (10-λ)(1-λ)^2.
A的特征值为: λ1=10,λ2=λ3=1.
(A-10E)X=0 的基础解系为禅猛 a1=(1,2,-2)'
(A-E)X=0 的基础解系为 a2=(2,-1,0)',a3=(2,0,1)
令P=(a1,a2,a3). 则P是可逆矩阵,且 P^-1AP=diag(10,1,1).
2. 解: 由于A,B相似, 所以它们的行列式相同,迹相同.
|A|=6a-8, |B|=2b,
tr(A)=5+a, tr(B)=3+b.
所以 6a-8 = 2b, 5+a = 3+b.
解得 a=3, b=5.
所以, A =
2 0 0
0 3 2
0 2 3
且 A 的特征值为 1,2,5.
(A-E)X=0 的基础解系为 a1=(0,1,-1)'.
(A-2E)X=0 的基础解系为 a2=(1,0,0)'.
(A-5E)X=0 的基础解系为 a3=(0,1,1)'逗卖.
令 U = (a1,a2,a3), 则 U 是可逆矩阵, 且
U^-1AU = diag(1,2,5).
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)