|
程序如下,是用来解线性方程的,用的是高斯赛德乐迭代法做的
9 a, C, `# n6 M/ U/ k( F; e1 d在算三个未知量的时是和答案一致的,四个未知量就有出入,做六个未知量就出错了.% L. X! ?& Z1 `
谁能告诉我错在哪里了,是题错还是程序错了.8 Y- M# ?& Y4 q2 e
刚开始学,不足之处请指教。
: r$ K+ g( D, r& O* r. O3 P#include
1 n0 j5 g/ b& y0 t9 A+ O#include
* z: V( B' T" q) I$ g9 e: C# X! y L#define NN 50 & ]; u+ {5 K z0 X/ m
void main()/ ?% ]) |3 g1 E$ P# [9 O
{
" t- e1 I N/ n1 O cout.setf(ios::fixed,ios::floatfield);
1 w" W5 M3 f! w! g% x cout<8 V9 V( z* }4 N9 v& \4 H
int i,j,k;: O: Q+ K0 [+ [; p& |* \6 L' S, }
double e,c,T,r;
. r6 ]- A5 d( M$ S //double x[NN],A[NN][NN],B[NN];) k. \4 O2 J- ~" _& {
//题目如下:任选一个' u4 l# Z1 [# o& |8 [5 f8 p$ y; C
//double x[NN]={0,0,0,0},A[NN][NN]={{0,0,0,0},{0,10,-2,-1},{0,-2,10,-1},{0,-1,-2,5}},B[NN]={0,3,15,10};' S) _$ t7 j9 r3 x
double x[NN]={0,0,0,0},A[NN][NN]={{0,0,0,0},{0,10,-1,-2},{0,-1,10,-2},{0,-1,-1,5}},B[NN]={0,7.2,8.3,4.2};7 u+ l2 p) b- j
//double x[NN]={0,0,0,0,0},A[NN][NN]={{0,0,0,0,0},{0,-5,1,1,2},{0,2,8,1,3},{0,1,-2,-4,-1},{0,-1,3,2,7}},B[NN]={0,-2,-6,6,12};2 b$ j2 D, P- q& n' e
//double x[NN]={0,0,0,0,0,0,0},A[NN][NN]={{0,0,0,0,0,0,0},{0,1,-1,0,-1,0,0},{0,2,4,-1,0,-1,0},{0,4,-1,4,-1,0,-1},{0,8,0,-1,4,-1,0},{0,12,-1,0,-1,4,-1},{0,16,0,-1,0,-1,4}},B[NN]={0,0,5,-2,5,-2,6};$ `' i. J8 b) ^+ |3 I n
//double x[NN]={0,0,0,0,0},A[NN][NN]={{0,0,0,0,0},{0,1,0.333,1.5,-0.333},{0,-2.01,1.45,0.50,2.95},{0,4.32,-1.95,0.007,2.08},{0,5.11,-4.00,3.33,-1.11}},B[NN]={0,3.00,2.62,0.130,3.77};
/ ?% E; X6 B' Y4 I+ x. X //double x[NN]={0,0,0,0},A[NN][NN]={{0,0,0,0},{0,10,3,1},{0,2,-10,3},{0,1,3,10}},B[NN]={0,14,-5,14};
9 Q s+ q7 J4 |9 I* o3 F+ r int N;
# w# J% d" t2 \0 W cout<<"请输入N值:";
/ }4 A/ {5 a. @, l cin>>N;
& k/ b8 I' f9 a* R$ e cout<' z5 c: _ }, ]" M7 c
cin>>e;; t6 z0 R0 V5 ?
/*cout<: e- i: F" L9 g" l1 a- K
for(i=1;i<=N;i++)
+ {. H- _8 W/ d! p' v( ` for(j=1;j<=N;j++)8 g* Y4 I$ b9 o7 Z
{9 M+ a, K0 x, [9 `& t; y# R, K. o
cin>>A[j];
, p" U U/ G% ?) E: n8 P }! z; `' Z' l0 H, ?5 d: ]
cout<$ M) G+ Y+ p( Q- O+ C: w1 ~- `
for(i=1;i<=N;i++)
: O2 C$ z$ C/ K2 i& ^ {2 S" Q2 `! u' O; N+ O4 \" M
for(j=1;j<=N;j++)) N7 v3 O% d& d! I; g0 V. L
{
v0 I5 L, C/ f7 h5 \ cout<[j]<<' ';3 @: |/ P3 |3 e4 K+ k
' b: F7 a6 [9 F
}
" |2 n$ H7 {, z0 X# `3 i T' M" W2 s cout<( A% w2 s" P# l. W }3 r, |; q$ g) D' z" v1 l; \( P z2 t
cout<3 G- |& H* D0 f0 f* n* B2 Y9 p+ O
for(i=1;i<=N;i++)cin>>B;
5 L& _5 w, t0 y for(i=1;i<=N;i++)cout<<<' ';
+ r0 s. ^ E% L7 H cout<0 Q* V( U m ^% f/ z+ f( C for(i=1;i<=N;i++)cin>>x;*/
8 D: e/ [$ F1 G1 r( B0 E
9 K9 X1 m8 [: A& I1 A* m1 ~ //cout<<"k"<) Q/ c" A2 l5 N9 X: i8 Z
//for(i=1;i<=N;i++)cout<<"x["<) _6 X1 r- C4 S' K0 l* l
r=e;
- O& T- n. u" J2 _9 b! Z" | for(k=1;r>=e;k++), q/ Y- _, V! K9 S
{ + p( e& [! }- n2 p
r=0;
8 C; b9 Q# W: l/ S i=1;2 V2 x3 e( |3 M: @/ ?% D
for(i=1;i<=N;i++)
2 ^% V. G5 f$ e! G8 i {
$ w1 m9 B* \ @# F4 r T=x;
/ u! L# _% K$ C' [0 G) s( v. T c=0;9 `* P; W0 }! Q( B7 ~# E6 L! i. Y4 X5 e
for(j=1;j<=N;j++)) u R, d& w: R" ~4 K
{
% X+ n) S/ D3 T" R$ {$ G- [" n if(j!=i)c+=(A[j]*x[j]);9 l V0 b F# d9 _$ J( x7 m
cout<<"第"< j! g4 v& B5 Q/ b" I4 q; v9 u& V
}( y/ c; j8 r% J3 H
//c1=0;
% ~, j3 R; g% v9 w2 {) i9 I4 Z: ? //for(j=1;j<=i-1;j++)c1+=(A[j]*x[j]);4 P1 c1 ?/ n. j. h5 m L0 |
x=(B-c)/A;
7 V4 M" W: G( Z) z8 w9 M h cout<<"第"<<( E3 A& ^! y4 ?$ k4 `# s if((fabs(x-T))>r)r=fabs(x-T);
& o# j* B, _8 J cout<<"第"<- T: A& ^6 Y& h9 A6 ~# w" }+ C }
. M) @+ x# ^8 T) V/ S' F3 d cout<( {2 I1 z7 k2 [* c( t/ t; ~& o
//cout<<"k="<: v k" T! x" Y/ D' X 6 b9 I6 p) L( T9 v5 w# y
//cout.setf(ios::fixed,ios::floatfield);
4 }. P/ i a7 L/ i# f for(i=1;i<=N;i++)cout<<"k="<<<' ';//<6 j6 ?$ W) M( U2 Z( G2 @* n. D
2 J! b2 j0 t8 u* I" X }cout<, X8 V! ]( o @& b8 H
: ~' z# l2 d3 A6 I j" q- F1 x} |
|