|
程序如下,是用来解线性方程的,用的是高斯赛德乐迭代法做的2 Y! L3 G B$ u( c
在算三个未知量的时是和答案一致的,四个未知量就有出入,做六个未知量就出错了.
- q# u: t/ U% g, u% ]0 Z( Q- E& ?谁能告诉我错在哪里了,是题错还是程序错了.
; Y" W* \# m) `9 t X+ H刚开始学,不足之处请指教。3 Y( e, V, D. f, b
#include8 w2 M7 B( K$ X) o
#include7 L; \, x) H+ D3 c4 P# y
#define NN 50 1 E2 U( \; e; @, j1 m+ f$ I) Y$ f
void main()
. A7 J* |3 g7 u. a | G { # X5 E$ u) R% g" F8 r
cout.setf(ios::fixed,ios::floatfield);
9 B) {4 l$ z% _4 d9 ^ cout<9 ]* p) B, j5 j% D& _$ Q9 Y int i,j,k;
7 h7 k1 r7 f( J double e,c,T,r;+ J" |' {# @% t& a3 H) U
//double x[NN],A[NN][NN],B[NN];& i- D, S2 L, a" E2 w+ F
//题目如下:任选一个2 `' `9 {- `" |4 F6 q1 }9 N: L B+ g. A
//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};) G: v0 E s3 Q
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};; ~3 m! i6 x/ y' Q" N
//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};+ j: o! d1 |& \& h S* R
//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};; M0 b& R" p" {: R! \
//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};1 G. h j2 o n
//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};; I% _) h8 t' d" H1 a: w
int N;
. u6 I' l7 L3 V" \0 L9 } cout<<"请输入N值:";/ h j+ C/ Q! g3 Y: }
cin>>N;
# u1 J; Q7 y' x' `; O cout<3 R5 Y. a( ?5 i* w- B( J7 T
cin>>e;
. t2 K4 Q- [3 q /*cout<5 Q0 m3 A7 U3 t7 @5 [
for(i=1;i<=N;i++)' B8 w$ i$ n) H2 Y! ]0 G3 k: _
for(j=1;j<=N;j++)$ ^! n' W6 n6 {+ Y& S# B* z
{# l) _3 a% d }- x# e. }
cin>>A[j];
7 x& ]" {* ~5 f: `- d! V- f }
, n+ ?8 b) ~$ Y) |( q2 p cout<4 e/ d8 \* l: d" a- y3 i for(i=1;i<=N;i++)
3 N7 X v. e# L- @9 n4 H3 f {
8 V8 e& C* \5 H' U& v2 p5 v for(j=1;j<=N;j++)
- I% S) G) f! N5 ?8 E {! G8 z% X5 K2 p
cout<[j]<<' ';% A3 B: }3 G# |) f7 z: W
/ a4 b3 F! _+ @, K) q
}
& c5 h6 A: X% Q cout<% p1 B7 t& h$ X2 o1 T8 X% d }
- `9 p4 v @; G+ \: \1 g7 K cout<4 Y: t" P5 v$ n8 G0 v9 K
for(i=1;i<=N;i++)cin>>B;
$ g5 J8 M& W$ w0 r6 G$ L) c for(i=1;i<=N;i++)cout<<<' ';
! N1 I4 Q" }9 R0 S1 s cout<5 { w+ y, G- l" {6 A* K
for(i=1;i<=N;i++)cin>>x;*/( w5 i* x, a! Q j, j& i
1 I3 |' E* i m# o' r% [ //cout<<"k"<. p! s. p3 t, i //for(i=1;i<=N;i++)cout<<"x["<6 o6 G% Z* V! h0 w r=e;8 H6 F, D6 F6 w4 @
for(k=1;r>=e;k++)
! [3 n3 j1 S' ~2 M8 F {
+ X$ V0 h& S7 ^" x r=0;4 z m) L9 Q: w& J$ V
i=1;- a8 \0 C0 t/ d& r4 U4 T
for(i=1;i<=N;i++)
* L! ?; x/ T3 k x {
, @3 D/ W9 J% ? T=x;. v: o/ k1 a3 B. \5 d5 H- F; J/ W
c=0;
" M r; Z4 n' d, M for(j=1;j<=N;j++): ?4 E: g8 c% \% s- Z& @9 J/ e9 o
{
: u5 ^1 u, g( E$ ~ if(j!=i)c+=(A[j]*x[j]);: I0 ~" H7 }+ s
cout<<"第"<8 m( f$ s" H7 L1 V6 ` }
/ `1 o6 U, Y$ e: f1 B+ Z //c1=0;2 L# `7 H& p/ }) W1 W
//for(j=1;j<=i-1;j++)c1+=(A[j]*x[j]);
6 x$ v! }, H9 c9 b$ T# u" t! M x=(B-c)/A; r; d/ L$ l% |, c
cout<<"第"<<1 j& [" L3 i$ Z; }. K% S8 x
if((fabs(x-T))>r)r=fabs(x-T);
8 w* D5 _8 Q+ l& c8 l0 m. \. d. W4 T) b cout<<"第"<) j- p- ?3 {, L Q/ \ }
' q$ E! Q2 ]+ B8 m6 R3 ~) ?5 r$ _# c cout</ }1 K" N/ M" Q2 J2 o( x, U //cout<<"k="<) O: Z/ O# I N9 V4 O' B) h
0 }& J; f) y! v) O! {0 d1 F //cout.setf(ios::fixed,ios::floatfield);
8 p% O: v7 R0 t, z5 k for(i=1;i<=N;i++)cout<<"k="<<<' ';//<2 V9 u4 V8 N8 }
6 k4 T0 y" c" M. ]2 S* \ V }cout<% Y" ]2 v3 }* \2 m7 l' z$ c# p
+ Z+ ]+ ^' ?+ L* {$ Q
} |
|