用c语言程序写一个函数,求线性代数方程组AX=b,要有通用性。非常感谢帮忙。

用c语言程序写一个函数,求线性代数方程组AX=b,要有通用性。非常感谢帮忙。,第1张

高则升斯-赛德尔迭代法

#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).


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12515191.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存