теңдеулер жүйесін аламыз.
Қорыта келгенде (4.11) теңдеулер жүйесінің коэффициенттері мен оң жағы мына формулалар арқылы табылатының көреміз: akj (0)= akj (k,j =1,2,…, n), (j=k +1, k +2,…, n; k =1,…, n). аіj (k)= aіj (k -1)- aіk (k -1) Ckj (і,j=k +1, k +2,…, n; k =1,…, n), fk (0)= fk, , (k=1,…,n), fі (k)= fі (k -1)- aіk (k -1) yk (і=k+1,k+2,…,n.), Ал (4.11) теңдеулер жүйесінің шешуі - х 1, х 2,…, х n мына формула арқылы табылады: хn = yn, (і=n-1,n-2,…,1). (4.13) Гаусс әдісімен теңдеулер жүйесін есептеу кезінде қолданылған арифметикалық амалдар саны - N=m(m2+3m-1)/3 екенің есептеу онша қиын емес. Гаусс әдісімен теңдеулер жүйесін шешкен кезде (4.12) формуласындағы бас элемент - а кк(к-1) өте аз шама болған жағдайда дөңгелектеу қателері өсіп, есептеу дәлдігі төмендеп кетуі мүмкін. Сондықтан, кейбір жағдайда, бас элемент ретінде max|aіk(k-1)| (і=k,n) коэфициентін алады, яғни |хіk| коэфициенті ең үлкен теңдеуді к -шы теңдеумен орын ауыстыру арқылы есептеуді жалғастырады. Бұл әдіс Гаусстың тік жол боынша бас элементті таңдау әдісі деп аталады. Егер akk -ны max|aіk(k-1)| (і=k+1,n) коэфициентімен алмастырсақ, яғни х к белгісізін хі белгісізімен орын алмастыру арқылы есептесе, онда бұл әдісті - Гаусстың жатық жол бойынша бас элементті таңдау әдісі дейді. С++ тілінде есепті жүзеге асыру: #include <iostream.h> #include <math.h> #include<stdlib.h> int main() { double a[10][10],x[10], c[10][10]; int m,n,i,j,k,d,t; cout<<"n="; cin>>n; cout<<"vvedite matrix A/B:"<<endl; for(i=1; i<=n; i++) { for(j=1; j<=n+1; j++) cin>>a[i][j]; }for (j=1; j<=n+1; j++) {c[1][j]=a[1][j];} for (k=1; k<=n-1; k++) { for (i=k+1; i<=n; i++) {for (j=k; j<=n+1; j++) {c[i][j]=a[i][j]-a[k][j]*(a[i][k]/a[k][k]);} for (j=1; j<=n+1; j++) a[i][j]=c[i][j];} for (j=1; j<=n; j++) {if (a[i][j]!=0) {d=i;} } if (a[i][i]==0) { for (j=i; j<=n+1; j++) t=a[i][j]; a[i][j]=a[d][j]; a[d][j]=t;} } for(i=1;i<=n;i++) for(j=1;j<=n;j++) {a[i][j]=c[i][j];} for(k=n-1;k>=1;k--) {for(i=n;i>=k+1;i--) {if (a[k][i]!=0) { for(j=n+1;j>=1;j--) {c[k][j]=a[k][j]-a[i][j]*(a[k][i]/a[i][i]);} a[k][j]=c[k][j];} else for (j=n+1;n>=1;n--) {c[k][j]=a[k][j];} for(j=1;j<=n+1;j++) a[k][j]=c[k][j];}} for(i=1; i<=n; i++) {for(j=1; j<=n+1; j++) cout<<c[i][j]<<" "; cout<<endl;} for(i=1;i<=n;i++) {x[i]=c[i][n+1]/c[i][i]; } for(i=1;i<=n;i++) cout<<"x["<<i<<"]="<<x[i]<<endl;}
Задачник по програмированию (Абрамов С.A)
#include<iostream.h> #include<math.h> void main () { int i,n; int t0[100]; int tf;
cin >> n; for(i=0;i<=n;i++) {cin >> t0[i]; tf=9/5*t0[i]+32; cout <<i<< "tf= " << tf << endl;}}
#include<iostream.h> #include<math.h>
void main() { int i,n; double a,b,x[100],y[100],k=0; cin >> a>> b >> n;
for(i=a;i<=n;i++) {cin >> x[i];} for(i=b;i<=n;i++) {cin>> y[i];} for(i=0;i<=n;i++) { k+=pow(x[i],2)+pow(y[i],2); cout <<i<<"k= " << k << endl; }}
#include<iostream.h> #include<math.h> #include<fstream.h>
void main() {ofstream write_file("mk.dat"); int h,x[100],y,a,b,n;
cin >> a >> b >>n; for(int i=a;i<=b;i++) h=(b-a)/n; {if(x[i]= a+i*h)
{y=sqrt(pow(x[i],4)+1);} cout << "y= " <<y << endl;
write_file << " y=" << y <<endl;}
#include<iostream.h> #include<math.h>
void main() { int i; int a1,a2,a3,a4,x[100],b[100]; cin >> a1 >> a2 >> a3 >> a4;
for(i=1;i<50;i++) {x[i]=i;
b[i]=((pow(x[i],2)-x[i]-a1)/(x[i]-a1))*((pow(x[i],3)-x[i]-a2)/(x[i]-a2)*(x[i]-a3))-((pow(x[i],4)-x[i]-a4)/(x[i]))+x[i]*(x[i]+a3);
cout << i <<"b[i] " << b[i] << endl; }}
|