Professional Documents
Culture Documents
Thí Nghiệm
Thí Nghiệm
Thí Nghiệm
NỘI SUY
Program NOISUY1;
Uses Crt;
const nmax = 50;
Type
mx = array [ 1..nmax] of real;
Var
X,Y,t,xa,cpa,xh,dh,tr,ra,rb,p,roh,r,il,ih,tt,ron,la,mu : mx;
xs,ys,x2,y2,p2,t2,tt2,roh2,r2,il2,ih2,f,af,aw,ap,m1,m2,ron2,la2,mu2 : real;
i,j,k,n,ncb : integer;
kt,kt2,kt3,kt4,kt5,kt6,kt7:char;
{--------------------------------------------------------------------------}
{Sinh vien tu viet chuong trinh noi suy}
Procedure NOISUY(xs:real;Var ys:real;Y,X:mx);
Begin
k:=0;
Repeat
K:=k+1;
Until (xs<X[k]);
ys:=y[k-1] + (Y[k] - Y[k-1])*(xs - X[k-1])/(X[k] - X[k-1]);
End;
{----------------------------------------------------------------------}
Procedure SOLIEU2;
{ Can bang pha cua he Benzen - Toluen }
Begin
{--------------------------------------------------------------------------}
Procedure SOLIEU10;
Begin
{ Cac thong so cua hoi va nuoc bao hoa }
{ Ap suat hoi nuoc bao hoa, Atm, tuyet doi }
P[1] := 0.03; P[2] := 0.04; P[3] := 0.05; P[4] := 0.06; P[5] :=0.08;
P[6] := 0.1; P[7] := 0.12; P[8] := 0.15; P[9] := 0.2; P[10] := 0.3;
P[11] := 0.4; P[12] := 0.5;P[13] := 0.6; P[14] := 0.7; P[15]:= 0.8;
p[16]:= 0.9; P[17] :=1.0; P[18] := 1.2; P[19] :=1.4; P[20] :=1.6;
p[21]:= 1.8; p[22] :=2.0; p[23] := 3.0; p[24] :=4.0; p[25] :=5.0;
p[26]:= 6.0; p[27] :=7.0; p[28] := 8.0; p[29] :=9.0; p[30] :=10.0;
p[31]:= 11.; p[32] :=12.; p[33] := 13.; p[34] :=14.; p[35]:=15.;
p[36]:= 16.; p[37] :=17.; p[38] := 18.; p[39] :=19.; p[40]:=20.;
p[41]:= 30.; p[42] :=40.; p[43] := 50.; p[44] :=60.; p[45]:=70.;
{ Nhiet do hoi nuoc bao hoa , t 0C }
t[1]:=23.7; t[2]:=28.6; t[3]:=32.5; t[4]:=35.8; t[5]:=41.1;
t[6]:=45.4; t[7]:=49.0; t[8]:=53.6; t[9]:=59.7; t[10]:=68.7;
t[11]:=75.4; t[12]:=80.9; t[13]:=85.5; t[14]:=89.3; t[15]:=93.0;
t[16]:=96.2; t[17]:=99.1; t[18]:=104.2; t[19]:=108.7; t[20]:=112.7;
t[21]:=116.3; t[22]:=119.6; t[23]:=132.9; t[24]:=142.9; t[25]:=151.1;
t[26]:=158.1; t[27]:=164.2; t[28]:=169.6; t[29]:=174.5; t[30]:=179.0;
t[31]:=183.2; t[32]:=187.1; t[33]:=190.7; t[34]:=194.1; t[35]:=197.4;
t[36]:=200.4; t[37]:=203.4; t[38]:=206.2; t[39]:=208.8; t[40]:=211.4;
t[41]:=232.8; t[42]:=249.2; t[43]:=262.7; t[44]:=274.3; t[45]:=284.5;
{ Khoi luong rieng cua hoi nuoc bao hoa Ro hoi * 1E3 }
roh[1]:=21.49; roh[2]:=28.20; roh[3]:=34.81; roh[4]:=41.33; roh[5]:=54.20;
roh[6]:=66.86; roh[7]:=79.37; roh[8]:=97.89; roh[9]:=128.3; roh[10]:=187.6;
roh[11]:=245.6; roh[12]:=302.7; roh[13]:=359.0;roh[14]:=414.7;roh[15]:=469.9;
roh[16]:=524.6; roh[17]:=579.0; roh[18]:=686.5;roh[19]:=793.1;roh[20]:=898.;
roh[21]:=1003.; roh[22]:=1107.; roh[23]:=1618.;roh[24]:=2120.;roh[25]:=2614.;
roh[26]:=3104.; roh[27]:=3591.; roh[28]:=4075.;roh[29]:=4536.;roh[30]:=5037.;
roh[31]:=5516.; roh[32]:=5996.; roh[33]:=6474.;roh[34]:=6952.;roh[35]:=7431.;
roh[36]:=7909.; roh[37]:=8389.; roh[38]:=8868.;roh[39]:=9349.;roh[40]:=9830.;
roh[41]:=14700.; roh[42]:=19730.; roh[43]:=24960.; roh[44]:=30410;
roh[45]:=36120.;
If kt6='n' then
Repeat
Writeln('Xin moi chon phuong phap tra so lieu:');
Writeln('Tra cac thong so theo nhiet do. Bam "t" de tiep tuc.');
Write('Tra cac thong so theo ap suat. Bam "a" de tiep tuc. ');
Readln(kt);
Writeln;
If kt='t' then
Repeat
Begin
Write('Nhap vao nhiet do cua hoi nuoc bao hoa(t0C): ');
Readln(t2);
Writeln; Writeln;
Noisuy(t2,p2,p,t);
Writeln('Ap suat cua hoi nuoc bao hoa: ',p2:4:2,' atm');
Noisuy(t2,roh2,roh,t);
Writeln('Khoi luong rieng cua hoi nuoc: ',roh2:4:2,' 10^-3 kg/m3');
Noisuy(t2,r2,r,t);
Writeln('An nhiet hoa hoi cua hoi nuoc bao hoa: ',r2:4:2,' kJ/Kg');
Noisuy(t2,il2,il,t);
Writeln('Ethalpy cua pha long: ',il2:4:2,' kJ/kG');
Noisuy(t2,ih2,ih,t);
Writeln('Ethalpy cua pha hoi: ',ih2:4:2,' kJ/kG');
tt2:=t2;
Noisuy(tt2,ron2,ron,tt);
Writeln('Khoi luong rieng cua nuoc ngung: ',ron2:4:2,' kg/m3');
Noisuy(tt2,la2,la,tt);
Writeln('He so dan nhiet cua nuoc ngung: ',la2:4:2,' w/mK');
Noisuy(tt2,mu2,mu,tt);
Writeln('Do nhot cua nuoc ngung: ',mu2:4:2,' 10^-6 PaS');
End;
Readln; Writeln;
Write('Ban co muon tiep tuc tra theo nhiet do? (c/k): ');
Readln(kt2);
Writeln;
Until kt2='k';
If kt='a' then
Repeat
Begin
Write('Nhap vao ap suat cua hoi nuoc bao hoa(atm): ');
Readln(p2);
Writeln; Writeln;
Noisuy(p2,t2,t,p);
Writeln('Nhiet do cua hoi nuoc bao hoa: ',t2:4:2,' 0C');
Noisuy(t2,roh2,roh,t);
Writeln('Khoi luong rieng cua hoi nuoc: ',roh2:4:2,' 10^-3 kg/m3');
Noisuy(t2,r2,r,t);
Writeln('An nhiet hoa hoi cua hoi nuoc bao hoa: ',r2:4:2,' kJ/Kg');
Noisuy(t2,il2,il,t);
Writeln('Ethalpy cua pha long: ',il2:4:2,' kJ/kG');
Noisuy(t2,ih2,ih,t);
Writeln('Ethalpy cua pha hoi: ',ih2:4:2,' kJ/kG');
tt2:=t2;
Noisuy(tt2,ron2,ron,tt);
Writeln('Khoi luong rieng cua nuoc ngung: ',ron2:4:2,' kg/m3');
Noisuy(tt2,la2,la,tt);
Writeln('He so dan nhiet cua nuoc ngung: ',la2:4:2,' w/mK');
Noisuy(tt2,mu2,mu,tt);
Writeln('Do nhot cua nuoc ngung: ',mu2:4:2,' 10^-6 PaS');
End;
Readln; Writeln;
Write('Ban co muon tiep tuc tra theo ap suat? (c/k): ');
Readln(kt2);
Writeln;
Until kt2='k';
Write('Ban co muon tiep tuc tra cac thong so cua hoi nuoc? (c/k): ');
Readln(kt3);
Writeln;
Until kt3='k';
Writeln;
Write('Ban muon ket thuc tra cuu? (c/k): ');
Readln(kt7);
Writeln;
Until kt7='c';
Readln;
End.
Program NHAN_HAI_MA_TRAN;
{Sinh vien tu viet chuong trinh}
Uses crt;
Type MT = array[1..100] of real;
Var A:array[1..100] of MT;
B,X:MT;
i,j,N: integer;
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln(' Chuong trinh nhan ma tran vuong voi ma tran cot');
Readln;
Writeln('1. Nhap vao ma tran vuong A:');
Repeat
Write('- Kich thuoc ma tran (n x n):'); Readln(N);
If N<=1 then Writeln('Kich thuoc ma tran la so tu nhien trong khoang (1,100]. Xin moi
nhap lai.')
Else
If N>100 then Writeln('Kich thuoc vuot qua gioi han. Xin moi nhap lai so tu nhien
trong khoang (1,100].');
Until (N>1) and (N<=100);
Writeln('- Nhap vao cac phan tu cua ma tran:');
For i:=1 to N do
For j:=1 to N do
Begin
Write(' A[',i,j,']= '); Read(A[i][j]);
End;
Writeln;
Writeln('2. Nhap vao cac phan tu cua ma tran cot B:');
Writeln('* Chu y: Ma tran vuong (n x n) chi nhan duoc voi ma tran cot (n x 1)');
For j:=1 to N do
Begin
Write(' B[',j,'1]= '); Readln(B[j]);
End;
For i:=1 to N do X[i]:=0;
For i:=1 to N do
For j:= 1 to N do
X[i]:=A[i][j]*B[j] + X[i];
Writeln;
Writeln('--> Ket qua nhan hai ma tran la:');
For i:=1 to N do Writeln(' X[',i,'1]= ',x[i]:4:2);
Readln;
End.
Program Tong_PTmin;
{sinh vien tu viet}
Uses crt;
Var x: array[1..5] of real;
Tong, Min: real;
i: integer;
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln; Readln;
Writeln(' Chuong trinh tinh tong cua 5 so hang va tim ra so hang nho nhat');
Readln;
Writeln('* Nhap vao 5 gia tri x:');
For i:=1 to 5 do
Begin
Write(' X',i,'='); Readln(x[i]);
End;
Tong:=x[1];
Min:=x[1];
For i:=2 to 5 do
Begin
Tong:=Tong+x[i];
If x[i]<Min then Min:=x[i];
End;
Writeln;
Writeln(' --> Tong cac so hang la: ',Tong:4:2);
Writeln;
Writeln(' --> So hang nho nhat la: ',Min:2:1);
Readln;
End.
{OK}
Program CAN_BANG_VAT_LIEU_1;
{********************************************************************}
{ Giai cac bai toan ve can bang vat lieu }
{ He phuong trinh tuyen tinh }
{********************************************************************}
{********************************************************************}
{ Giai he phuong trinh tuyen tinh bang phuong phap GAUSS }
{ A[i,j] - ma tran he so ve trai }
{ B [j] - ma tran he so cua ve phai }
{ N - so nghiem cua phuong trinh }
{********************************************************************}
{********************************************************************}
{ Vi du : }
{ Chuan bi hon hop Nitro hoa tu : - Axit thai }
{ - Axit Nitric }
{ - Oleum }
{********************************************************************}
uses Crt;
const
Maxsize = 50;
MSO3=80;
MH2SO4=98;
Type
m1 = array[ 1..maxsize, 1..maxsize+1]of real;
m2 = array[1..maxsize ] of real;
Var
i,j,k,n : integer;
t, t1 : boolean;
OK,kt,kt1,kt2,kt3 : char;
c,m : real;
A : m1; X, Q : m2;
{}
{--------------------------------------------------------------------------}
Procedure GAUSS(var A:m1;var N: integer; var X:m2);
{ Giai he pt tuyen tinh bang PP khu dan nghiem cua Gauss }
{ A[i,j] - ma tran he so mo rong }
{ X[i] - ma tran he so ve phai va chua nghiem can tim}
{ N - so nghiem }
const
maxSize = 50;
var
i,j,k : integer;
t,t1 : boolean;
OK: char;
c : real;
Begin
i := 1;
t1 := true;
while t1 and (i<n) do
begin
if a[i,i]= 0 then
begin
t := true;
k := i+1;
while t and (k<=n) do
if a[k,i]<>0
then
begin
for j := i to n+1 do
begin
c := a[i,j];
a[i,j] := a[k,j];
a[k,j] := c;
end;
t := false;
end
else k := k+1;
if k=n+1 then
begin
if a[i,k]= 0
then writeln(' HE VO DINH ')
else writeln(' HE VO NGHIEM ');
t1 := false;
end;
end;
if a[i,i]<>0
then
begin
c := a[i,i];
for j := i+1 to n+1 do
a[i,j] := a[i,j]/c;
for k := i+1 to n do
begin
c := a[k,i];
for j:=i+1 to n+1 do
a[k,j] := a[k,j]-a[i,j]*c;
end;
end;
i := i+1;
end;
if t1 then
begin
x[n] := a[n,n+1]/a[n,n];
for i:=n-1 downto 1 do
begin
x[i] := a[i,n+1];
for j:=n downto i+1 do
x[i] := x[i]-a[i,j]*x[j];
end;
writeln;
writeln;
end;
End;
{}
{------------------------------------------------------------------------}
{ THAN CHUONG TRINH CHINH }
{------------------------------------------------------------------------}
{Sinh vien tu viet}
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln(' Chuong trinh tinh luong nguyen lieu dau vao de san xuat hon hop Nitro
hoa');
Readln;
Repeat
Repeat
Write('Nhap vao khoi luong hon hop Nitro hoa can san xuat (kg): ');
Readln(Q[9]); Writeln;
Writeln('Nhap vao thanh phan cua hon hop Nitro hoa:');
Write(' + Nong do H2SO4 (%): ');Readln(Q[3]);
Write(' + Nong do HNO3 (%): '); Readln(Q[4]);
Write(' + Nong do H2O (%): '); Readln(Q[5]);
Writeln;
Writeln('Nhap vao thanh phan nguyen lieu dau vao:');
Write(' + Nong do HNO3 (%): '); Readln(Q[1]);
Write(' + Nong do Oleum (%): '); Readln(Q[2]);
Q[6]:=55; Q[7]:= 22; Q[8]:= 23;
Writeln(' + Axit thai co thanh phan: 55% H2SO4, 22% HNO3, 23%H2O. ');
Write(' Ban co muon thay doi thanh phan axit thai khong? (c/k): ');
Readln(kt);
If kt='c' then
Begin
Writeln('Nhap vao thanh phan cua axit thai:');
Write('Nong do H2SO4 (%): ');Readln(Q[6]);
Write('Nong do HNO3 (%): '); Readln(Q[7]);
Write('Nong do H2O (%): '); Readln(Q[8]);
End;
Writeln;
Write('Ban co muon nhap lai so lieu khong? (c/k): ');
Readln(kt1);Writeln;
Until kt1='k';
m:=MSO3/MH2SO4;
X[1]:=Q[7]/100;
X[2]:=0;
X[3]:=Q[1]/100;
X[4]:=Q[4]/100;
X[5]:=Q[6]*m/100;
X[6]:=Q[2]/100 + (1-Q[2]/100)*m;
X[7]:=0;
X[8]:=Q[3]*m/100;
A[1][1]:=1;
A[1][2]:=1;
A[1][3]:=1;
A[1][4]:=Q[9];
A[2][1]:=X[1];
A[2][2]:=X[2];
A[2][3]:=X[3];
A[2][4]:=X[4]*Q[9];
A[3][1]:=X[5];
A[3][2]:=X[6];
A[3][3]:=X[7];
A[3][4]:=X[8]*Q[9];
n:=3;
Write('Ban co muon xem cac ma tran he so? (c/k): ');
Readln(kt3);
If kt3='c' then
Begin
Write(' A B ');
Writeln; Writeln;
For i:=1 to 3 do
Begin
Write(' ! ');
For j:=1 to 3 do write(A[i][j]:6:2,' ');
Write(' ! ');
j:=j+1;
Write(A[i][j]:8:2);
Write(' !');
Writeln;
End;
End;
Readln;
Gauss(A,n,X);
Writeln('Ket qua: ');
Writeln('+ Luong axit thai can dung la: ',X[1]:4:2,' kg.');
Writeln('+ Luong Oleum can dung la: ',X[2]:4:2,' kg.');
Writeln('+ Luong Axit Nitric can dung la: ',X[3]:4:2,' kg.');
Readln;
Writeln;
Write('Ban co muon tinh lai khong? (c/k): ');
Readln(kt2); Writeln;
Until kt2='k';
End.
Program CAN_BANG_VAT_LIEU_2;
{********************************************************************}
{ Giai cac bai toan ve can bang vat lieu }
{ He phuong trinh tuyen tinh }
{********************************************************************}
{*****************************************************************}
{ TINH CAN BANG VAT LIEU CUA HE THONG THIET BI CONG NGHE HOA }
{ CO DAC - KET TINH - SAY }
{ }
{*****************************************************************}
{ Giai he phuong trinh tuyen tinh bang phuong phap GAUSS }
{ A[i,j] - ma tran he so ve trai }
{ B [j] - ma tran he so cua ve phai }
{ N - so nghiem cua phuong trinh }
{********************************************************************}
uses Crt;
const
Maxsize = 50;
Type
m1 = array[ 1..maxsize, 1..maxsize+1]of real;
m2 = array[1..maxsize ] of real;
Var
i,j,k,n : integer;
t, t1 : boolean;
OK,kt,kt1,kt2 : char;
c : real;
A : m1; X, Q : m2;
{}
{--------------------------------------------------------------------------}
Procedure GAUSS(var A:m1;var N: integer; var X:m2);
const
maxSize = 50;
var
i,j,k : integer;
t,t1 : boolean;
OK: char;
c : real;
Begin
i := 1;
t1 := true;
while t1 and (i<n) do
begin
if a[i,i]= 0 then
begin
t := true;
k := i+1;
while t and (k<=n) do
if a[k,i]<>0
then
begin
for j := i to n+1 do
begin
c := a[i,j];
a[i,j] := a[k,j];
a[k,j] := c;
end;
t := false;
end
else k := k+1;
if k=n+1 then
begin
if a[i,k]= 0
then writeln(' HE VO DINH ')
else writeln(' HE VO NGHIEM ');
t1 := false;
end;
end;
if a[i,i]<>0
then
begin
c := a[i,i];
for j := i+1 to n+1 do
a[i,j] := a[i,j]/c;
for k := i+1 to n do
begin
c := a[k,i];
for j:=i+1 to n+1 do
a[k,j] := a[k,j]-a[i,j]*c;
end;
end;
i := i+1;
end;
if t1 then
begin
x[n] := a[n,n+1]/a[n,n];
for i:=n-1 downto 1 do
begin
x[i] := a[i,n+1];
for j:=n downto i+1 do
x[i] := x[i]-a[i,j]*x[j];
end;
writeln;
{ writeln(' MA TRAN MO RONG ');
writeln;
for i:=1 to n do
begin
for j:=1 to n+1 do
write(a[i,j]:1:6,' ');
writeln;
end; }
writeln;
end;
End;
{------------------------------------------------------------------------}
{ THAN CHUONG TRINH CHINH }
{------------------------------------------------------------------------}
{Sinh vien tu viet chuong trinh chinh}
Begin
Clrscr;
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln('Chuong trinh tinh toan qua trinh san xuat K2Cr2O7 tu dung dich Kali
Bicromat');
Readln;Writeln;
Repeat
Repeat
Write('Nhap vao luu luong cua he thong (kg/s): ');
Readln(X[9]);
Write('Nhap vao nong do dung dich sau thiet bi co dac (%): ');
Readln(X[10]);
Write('Nhap vao nong do nuoc cai sau khi ket tinh (%): ');
Readln(X[11]);
Write('Nhap vao nong do dung dich di vao thiet bi co dac (%klg): ');
Readln(X[12]);
Write('Nhap vao luong nuoc cai trong tinh the am (%): ');
Readln(X[13]); Writeln;
Write('Ban co muon nhap lai so lieu khong? (c/k): ');
Readln(kt);
Until kt='k';
X[10]:=X[10]/100;
X[11]:=X[11]/100;
X[12]:=X[12]/100;
X[13]:=X[13]/100;
A[1][1]:=1;
A[1][2]:=1;
A[1][3]:=1;
A[1][4]:=0;
A[1][5]:=0;
A[1][6]:=0;
A[1][7]:=0;
A[1][8]:=0;
A[1][9]:=X[9];
A[2][1]:=1;
A[2][2]:=0;
A[2][3]:=0;
A[2][4]:=0;
A[2][5]:=0;
A[2][6]:=0;
A[2][7]:=-X[9];
A[2][8]:=0;
A[2][9]:=0;
A[3][1]:=-1;
A[3][2]:=0;
A[3][3]:=-1;
A[3][4]:=0;
A[3][5]:=0;
A[3][6]:=0;
A[3][7]:=0;
A[3][8]:=1;
A[3][9]:=0;
A[4][1]:=-1;
A[4][2]:=0;
A[4][3]:=0;
A[4][4]:=0;
A[4][5]:=0;
A[4][6]:=0;
A[4][7]:=0;
A[4][8]:=(1-X[13])+X[11]*X[13];
A[4][9]:=0;
A[5][1]:=0;
A[5][2]:=0;
A[5][3]:=0;
A[5][4]:=1;
A[5][5]:=-1;
A[5][6]:=0;
A[5][7]:=0;
A[5][8]:=-1;
A[5][9]:=0;
A[6][1]:=0;
A[6][2]:=0;
A[6][3]:=0;
A[6][4]:=X[10];
A[6][5]:=-X[11];
A[6][6]:=0;
A[6][7]:=0;
A[6][8]:=-X[13]*X[11]-(-X[13]+1);
A[6][9]:=0;
A[7][1]:=0;
A[7][2]:=0;
A[7][3]:=0;
A[7][4]:=0;
A[7][5]:=-1;
A[7][6]:=1;
A[7][7]:=0;
A[7][8]:=0;
A[7][9]:=X[9];
A[8][1]:=0;
A[8][2]:=0;
A[8][3]:=0;
A[8][4]:=0;
A[8][5]:=-X[11];
A[8][6]:=X[12];
A[8][7]:=-X[9];
A[8][8]:=0;
A[8][9]:=0;
n:=8;
Writeln;
Write('Ban co muon xem cac ma tran he so? (c/k): ');
Readln(kt1);
If kt1='c' then
Begin
Write(' A B ');
Writeln; Writeln;
For i:=1 to 8 do
Begin
Write('! ');
For j:=1 to 8 do write(A[i][j]:6:2,' ');
Write(' ! ');
j:=j+1;
Write(A[i][j]:6:2);
Write(' !');
Writeln;
End;
End;
Readln;
Gauss(A,n,X);
Writeln('Ket qua: ');
Write('Luong tinh the kho nhan duoc la: ',X[1]:4:2,' kg/s');
Writeln;
Write('Luong nuoc bay hoi tu thiet bi co dac: ',X[2]:4:2,' kg/s');
Writeln;
Write('Luong am bay hoi tu thiet bi say: ',X[3]:4:2,' kg/s');
Writeln;
Write('Luong dung dich sau khi co dac: ',X[4]:4:2,' kg/s');
Writeln;
Write('Luong nuoc cai tuan hoan: ',X[5]:4:2,' kg/s');
Writeln;
Write('Luong dung dich vao thiet bi co dac: ',X[6]:4:2,' kg/s');
Writeln;
Write('Luong tinh the am vao thiet bi say: ',X[8]:4:2,' kg/s');
Writeln;
Write('Nong do dung dich dau: ',X[7]*100:4:2,' %klg');
Readln;Writeln;
Write('Ban co muon tinh lai khong? (c/k): ');
Readln(kt2);
Until kt2='k';
Readln;
End.
Program HE_TUYEN_TINH;
{ OK}
{ Giai he tuyen tinh bang phuong phap nghich dao ma tran }
Uses Crt;
Type
m1 = array[1..100] of real;
m3 = array[1..10,1..10] of real;
Var
Y,Z,F,W,X ,B: m1;
P,A,G,Grad1 : m3;
h,cvgtol, dvgtol, dif,test,dela, d : real;
n,m,Itmax, Icount,i,j,l : integer;
kt:char;
{-------------------------------------------------------------------------}
Procedure DaoMT (var A : m3; B : m1;N: integer; var D : real);
{ Nghich dao ma tran bang phuong phap Jordan }
{ A[n,n] - ma tran he so va ma tran nghich dao A[-1]
B[j] - ma tran he so Bj
N - bac cua ma tran A[n,n]
D - dinh thuc cua ma tran }
Begin
D := 1.0;
tol := 1.0E-35;
for j := 1 to n do
Ipv[j,3] := 0;
{ Vong chinh : khu dan tung dong cua ma tran }
for i := 1 to n do
begin
{ Tim phan tu lon nhat cua ma tran- Thu su suy bien cua ma tran A }
Amax := 0.0;
for j := 1 to n do
begin
if( Ipv[j,3] = 1) then goto 25;
for k := 1 to n do
begin
if( Ipv[k,3] = 1 ) then goto 20;
if( Amax >= abs( A[j,k] )) then goto 20;
Irow := j;
icolum := k;
Amax := abs( A[j,k]);
20:
end; { 20}
25:
end; { 25}
if( Amax <= tol) then goto 300;
Ipv[icolum,3] := 1;
Ipv[ i,1] := Irow;
Ipv[i,2] := Icolum;
{ Dao cac cot sao cho phan tu lon nhat nam tren duong cheo }
if ( irow = icolum) then goto 35;
for L := 1 to n do
begin
swap := A[irow, L];
A[irow, L] := A[ icolum,L] ;
A[icolum,L] := swap;
30:
end; { 30}
{ Hieu chinh Dinh thuc D va chuan hoa dong chinh }
35:
Pivot := A[icolum,icolum];
D := D*Pivot;
A[icolum,icolum] := 1.0;
for L := 1 to n do
A[icolum,L] := A[icolum,L]/ Pivot;
{ Khu cotva giu nguyen cac phan tu da dao }
for L1 := 1 to N do
Begin
if( L1 = icolum ) then goto 55;
T := A[L1,icolum];
A[ L1,icolum] := 0.0;
for L := 1 to n do
A[L1,L] := A[L1,L] - A[icolum,L] * T;
55:
End; { 55}
end; { 100}
{ Hoan vi cac cot va thay doi Dinh thuc }
Nswap := 0;
for i := 1 to n do
Begin
L := N - I + 1;
If( Ipv[L,1] = Ipv[L,2]) then goto 250;
Jrow := Ipv[L,1];
Jcolum := Ipv[L,2];
Nswap := Nswap + 1;
for K := 1 to n do
Begin
Swap := A[K,Jrow];
A[K,Jrow] := A[K,Jcolum];
A[K,Jcolum] := Swap;
200:
End; { 200}
250:
End; { 250}
if( odd(Nswap)) then D := -D;
Writeln;
writeln('Dinh thuc D =',d:4:2);
Writeln;
Exit;
300:
D := 0.0;
writeln('He suy bien, Dinh thuc D = 0.0');
end;
{--------------------------------------------------------------------------}
{ Chuong trinh chinh }
{Sinh vien tu viet chuong trinh chinh}
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln('Chuong trinh giai he phuong trinh tuyen tinh bang phuong phap nghich dao
ma tran');
Readln;
Repeat
Begin
Write('Nhap so bac cua he phuong trinh: ');
Repeat
Readln(n);
Writeln;
if n<=0 then Write('Bac cua he phuong trinh la so tu nhien trong doan [1,10]. Xin moi
nhap lai: ')
Else if
n>10 then
begin
Writeln('Bac vuot qua gioi han cho phep.');
Write('Xin moi nhap lai bac cua he phuong trinh trong doan [1,10]: ');
end;
Until (n>0) and (n<=10);
Writeln(' Nhap cac he so ben trai:');
For i:=1 to n do
For j:=1 to n do
Begin
Write(' A[',i,j,']= '); Readln(A[i][j]);
End;
Writeln;
Writeln(' Nhap cac he so ben phai:');
For j:=1 to n do
Begin
Write(' B[',j,']= '); Readln(B[j]);
End;
DaoMT(A,B,n,D);
For i:=1 to N do X[i]:=0;
For i:=1 to N do
For j:= 1 to N do
X[i]:=A[i][j]*B[j] + X[i];
Writeln(' --> Nghiem cua phuong trinh la:');
For j:=1 to n do
Writeln(' X[',j,']= ',X[j]:4:2);
End;
Readln; Writeln;
Write('Ban co muon tiep tuc khong? (c/k): ');
Readln(kt); Writeln;
Until kt='k';
Readln;
End.
VII. GAUSS
{OK}
Program GAUS;
uses crt;
{********************************************************************}
{ Giai he phuong trinh tuyen tinh }
{********************************************************************}
const
Maxsize = 50;
Type
m1 = array[ 1..maxsize, 1..maxsize+1]of real;
m2 = array[1..maxsize ] of real;
Var
i,j,k,n : integer;
t, t1 : boolean;
OK : char;
c : real;
A : m1; X, B : m2;
kt:char;
{}
{--------------------------------------------------------------------------}
Procedure GAUSS(var A:m1;var N: integer; var X:m2);
const
maxSize = 50;
var
i,j,k : integer;
t,t1 : boolean;
OK: char;
c : real;
Begin
i := 1;
t1 := true;
while t1 and (i<n) do
begin
if a[i,i]= 0 then
begin
t := true;
k := i+1;
while t and (k<=n) do
if a[k,i]<>0
then
begin
for j := i to n+1 do
begin
c := a[i,j];
a[i,j] := a[k,j];
a[k,j] := c;
end;
t := false;
end
else k := k+1;
if k=n+1 then
begin
if a[i,k]= 0
then writeln(' HE VO DINH ')
else writeln(' HE VO NGHIEM ');
t1 := false;
end;
end;
if a[i,i]<>0
then
begin
c := a[i,i];
for j := i+1 to n+1 do
a[i,j] := a[i,j]/c;
for k := i+1 to n do
begin
c := a[k,i];
for j:=i+1 to n+1 do
a[k,j] := a[k,j]-a[i,j]*c;
end;
end;
i := i+1;
end;
if t1 then
begin
x[n] := a[n,n+1]/a[n,n];
for i:=n-1 downto 1 do
begin
x[i] := a[i,n+1];
for j:=n downto i+1 do
x[i] := x[i]-a[i,j]*x[j];
end;
writeln;
{ writeln(' MA TRAN MO RONG ');
writeln;
for i:=1 to n do
begin
for j:=1 to n+1 do
write(a[i,j]:1:6,' ');
writeln;
end; }
writeln;
end;
End;
{}
{------------------------------------------------------------------------}
{ THAN CHUONG TRINH CHINH }
{------------------------------------------------------------------------}
{Sinh vien tu viet chuong trinh chinh}
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln(' Chuong trinh giai he phuong trinh tuyen tinh bang phuong phap Gauss -
Jordan');
Readln;
Repeat
Begin
Write('Nhap so bac cua he phuong trinh: ');
Repeat
Readln(n);
Writeln;
if n<=0 then Write('Bac cua he phuong trinh la so tu nhien trong doan [1,50]. Xin moi
nhap lai: ')
Else if
n>50 then
begin
Writeln('Bac vuot qua gioi han cho phep.');
Write('Xin moi nhap lai bac cua he phuong trinh trong doan [1,50]: ');
end;
Until (n>0) and (n<=50);
Writeln;
Writeln(' Nhap cac he so ben trai:');
For i:=1 to n do
For j:=1 to n do
Begin
Write(' A[',i,j,']= '); Readln(A[i][j]);
End;
Writeln;
Writeln(' Nhap cac he so ben phai:');
For j:=1 to n do
Begin
Write(' B[',j,']= '); Readln(B[j]);
End;
For i:=1 to n do
A[i][n+1]:=B[i];
Gauss(A,N,X);
Writeln(' --> Nghiem cua he phuong trinh la:');
For i:=1 to n do
Writeln(' X[',i,']= ',X[i]:4:2);
End;
Readln;
Write('Ban co muon tiep tuc khong? (c/k): ');
Readln(kt); Writeln;
Until kt='k';
Readln;
End.
Program NEWTON_RAPHSON;
{ OK }
{ Tim nghiem ham phi tuyen bang phuong phap NEWTON-RAPHSON}
{ Ham so va dao ham viet o dang Function }
{ Itmax: so lan lap toi da ,
Tol : Tieu chuan hoi tu ,
X : Gia tri dau cua nghiem X }
Uses Crt;
Var
X , tol, eps,x0,ss, fx, dfx{,a2,a22,a3,a33,a333,a4,a44,a444,a5,a55,
a6} : real;
itmax,i : integer;
kt,kt1,kt2,kt3,kt4:char;
{---------------------------------------------------------------------------}
Function F1( x: real) : real;
begin
{ Sinh vien tu viet}
F1:=Sqr(Sqr(x))*Sqr(x)-Sqr(Sqr(x))-Sqr(x)*x-1;
end;
{--------------------------------------------------------------------------}
Function dF1( X:real) : real;
begin
{ Sinh vien tu viet}
dF1:=6*Sqr(Sqr(x))*x-4*Sqr(x)*x-3*Sqr(x);
end;
Function F2(x:real):real;
begin
F2:=(ln(x)/ln(10))-cos(x);
end;
Function dF2(x:real):real;
begin
dF2:=(1/(x*ln(10)))+sin(x);
end;
{-------------------------------------------------------------------------}
Procedure NEWTON1;
{ Tim nghiem ham phi tuyen bang phuong phap NEWTON-RAPHSON}
{ Ham so va dao ham viet o dang Function }
{ Itmax: so lan lap toi da ,
Tol : Tieu chuan hoi tu ,
X : Gia tri dau cua nghiem X }
{ Var
X , tol, xold, fx, dfx : real;
itmax,i : integer;}
Begin
{} X:=X0;
i:=0;
{Bat dau lap}
{ Repeat}
{ for i:=1 to itmax do}
Writeln;
Write('Ban co muon xem qua trinh giai phuong trinh khong? (c/k): ');
Readln(kt1);
If kt1<>'c' then
Repeat
fx:=f1(X);
dfx:=df1(X);
X:= X-fx/dFx;
ss := abs( x - x0);
x0:= x;
Until( ss <= eps)
else
Repeat
fx:=f1(X);
dfx:=df1(X);
X:= X-fx/dFx;
ss := abs( x - x0);
x0:= x;
i:=i+1;Writeln;
Writeln(' Lan lap thu ',i,':');
Writeln(' X= ',x:6:4);
Writeln(' Fx= ',fx:6:4);
Writeln(' dFx= ',dfx:6:4);
Readln;
Until( ss <= eps);
End;
Procedure NEWTON2;
{ Tim nghiem ham phi tuyen bang phuong phap NEWTON-RAPHSON}
{ Ham so va dao ham viet o dang Function }
{ Itmax: so lan lap toi da ,
Tol : Tieu chuan hoi tu ,
X : Gia tri dau cua nghiem X }
{ Var
X , tol, xold, fx, dfx : real;
itmax,i : integer;}
Begin
{} X:=X0;
i:=0;
{Bat dau lap}
{ Repeat}
{ for i:=1 to itmax do}
Writeln;
Write('Ban co muon xem qua trinh giai phuong trinh khong? (c/k): ');
Readln(kt2);
If kt2<>'c' then
Repeat
fx:=f2(X);
dfx:=df2(X);
X:= X-fx/dFx;
ss := abs( (x - x0)/x);
x0:= x;
Until( ss <= eps)
else
Repeat
fx:=f2(X);
dfx:=df2(X);
X:= X-fx/dFx;
ss := abs( (x - x0)/x);
x0:= x;
i:=i+1;Writeln;
Writeln(' Lan lap thu ',i,':');
Writeln(' X= ',x:6:4);
Writeln(' Fx= ',fx:6:4);
Writeln(' dFx= ',dfx:6:4);
Readln;
Until( ss <= eps);
End;
{----------------------------- Chuong trinh chinh--------------------------- }
{Sinh vien tu viet}
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln(' Chuong trinh tim nghiem cua phuong trinh');
Readln;
Repeat
Writeln('Tim nghiem phuong trinh X^6 - X^4 - X^3 - 1 = 0. Bam 1 de tiep tuc.');
Write('Tim nghiem phuong trinh Log(x) - Cos(x) = 0. Bam 2 de tiep tuc: ');
Readln(kt3);
If kt3='1' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln;
Writeln(' Chuong trinh tim nghiem cua phuong trinh');
Writeln;
Writeln('Tim nghiem phuong trinh X^6 - X^4 - X^3 - 1 = 0'); Writeln;Readln;
Write('Nhap vao gia tri ban dau: ');
Readln(X0);
Write('Nhap vao sai so: ');
Readln(eps);
NEWTON1;
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln;
Writeln(' Chuong trinh tim nghiem cua phuong trinh');
Writeln;
Writeln('Tim nghiem phuong trinh X^6 - X^4 - X^3 - 1 = 0'); Writeln;
Writeln('Nghiem cua phuong trinh la: ',(x+x0)/2:6:4);
Readln;Writeln;
Write('Ban co muon tim lai nghiem cua phuong trinh khong? (c/k): ');
Readln(kt);Writeln;
Until kt<>'c';
If kt3='2' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln;
Writeln(' Chuong trinh tim nghiem cua phuong trinh');
Writeln;
Writeln('Tim nghiem phuong trinh Log(x) - Cos(x) = 0'); Writeln; Readln;
Write('Nhap vao gia tri ban dau: ');
Readln(X0);
Write('Nhap vao sai so: ');
Readln(eps);
NEWTON2;
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln;
Writeln(' Chuong trinh tim nghiem cua phuong trinh');
Writeln;
Writeln('Tim nghiem phuong trinh Log(x) - Cos(x) = 0'); Writeln;
Writeln('Nghiem cua phuong trinh la: ',(x+x0)/2:6:4);
Readln;Writeln;
Write('Ban co muon tim lai nghiem cua phuong trinh khong? (c/k): ');
Readln(kt3);Writeln;
Until kt3<>'c'; Writeln;
Write('Ban co muon tinh lai khong? (c/k): ');
Readln(kt4);Writeln;
Until kt4<>'c';
End.
{OK}
Program HE_PHI_TUYEN;
{*****************************************************************}
{ Giai he phuong trinh phi tuyen bang phuong phap NEWTON-RAPHSON }
{*****************************************************************}
{ }
{ Huong dan su dung: }
{ N : so phuong trinh cua he, N<= 20 }
{ X : mang chua n gia tri gan dung ban dau va }
{ chua ket qua tim nghiem }
{ F( X, Y, N ) : ch/trinh con tinh gia tri cua ham F theo gia tri}
{ cua X . }
{ Gia tri tim duoc cua F chua trong mang Y }
{ G( N, X, A ) : ch/trinh con tinh gia tri cua cac dao ham rieng }
{ cua ham F }
{ A : mang chua cac gia tri cua cac dao ham rieng }
{ cua ham F }
{ Eps : do chinh xac khi tim nghiem }
{ K : so buoc lap khi tim nghiem }
{ }
{*****************************************************************}
Uses Crt;
Const Nmax = 20; ITmax = 50;
Type
mX = array[ 1..Nmax] of real;
mA = array[1..Nmax*Nmax] of real;
mL = array[1..Nmax] of integer;
Var
X, X1, Y : mX;
A : mA;
L, M : mL;
i,j,k,n,nk : integer;
s, eps, dt : real;
kt,kt1,kt2,kt3,kt4,kt5:char;
{---------------------------------------------------------------------------}
Procedure F1( N: integer; Var X : mX; Var Y : mX);
Begin
{Sinh vien tu viet}
y[1]:=x[1]-exp(-x[2]);
y[2]:=x[2]-exp(x[1]);
End;
{---------------------------------------------------------------------------}
Procedure G1( N :integer; Var X : mX; var A : mA);
{ Dao ham rieng viet tuan tu theo bien thu 1, 2, ...n :
df1/dx1, df2/dx1, df3/dx1,...,df1/dx2, df2/dx2,...}
{ Chu y : mang A la mang mot chieu dung de luu giu cac dao ham rieng}
Begin
{Sinh vien tu viet}
A[1]:= 1;
A[3]:= exp(-x[2]);
A[2]:= -exp(x[1]);
A[4]:= 1;
End;
{---------------------------------------------------------------------------}
Procedure NDMT2( n : integer; var A :mA; var dt : real);
label l1,l2;
var
l,m : ml;
i,j,k,nk,iz,ji,kk,ij,jp,ki,kj,jk,jq,jr,ik : integer;
hl, bg,r : real;
BEGIN
dt := 1.0;
nk := - n;
{ Writeln(' Vong lap dau tien theo k ');}
for k := 1 to n do
begin
{ writeln(' Chi so k =',k);}
nk := nk + n;
l[k] := k;
m[k] := k;
kk := nk + k;
bg := A[kk];
iz := nk - n;
for j := k to n do
begin
iz := iz + n;
for i := k to n do
begin
ij := iz + i;
r := abs( bg) - abs( A[ij]);
if( r< 0.0) then
begin
bg := A[ij] ;
L[k] := i;
M[k] := j;
jp := iz;
end;
end;
end;
if( bg = 0.0) then
begin
dt := 0.0;
Goto l2;
end;
j := L[k];
if( j <> k ) then
begin
ki := k -n;
for i := 1 to n do
begin
ki := ki + n;
hl := - A[ki];
ji := ki - k + j;
A[ki] := A[ji];
A[ji] := hl;
end;
end;
i := M[k];
if( i <> k) then
begin
for j := 1 to n do
begin
jk := nk + j;
ji := jp + j;
hl := - A[ jk];
A[jk] := A[ji];
A[ji] := hl;
end;
end;
for i := 1 to n do
if( i<> k) then
begin
ik := nk + i;
A[ik] := - A[ik]/ bg;
end;
for i := 1 to n do
begin
if( i<> k) then
begin
ik := nk + i;
hl := A[ik];
ij := i -n;
for j := 1 to n do
begin
ij := ij + n;
if( j <> k) then
begin
kj := ij -i+k;
A[ij] := A[ij] + hl* A[kj];
end;
end;
end;
end;
kj := k - n;
for j := 1 to n do
begin
kj := kj + n;
if( j <> k) then
A[kj] := A[kj]/bg;
end;
A[kk] := 1.0/bg;
dt := dt *bg;
end; { Ket thuc vong lap thu 1 theo k }
{ Writeln(' Vong lap thu 2 theo k');}
k := n;
While( true) do
begin
l1: k := k- 1;
{ Writeln(' Chi so k =',k);}
if( k= 0) then goto L2;
i := L[k];
if( i<> k) then
begin
jq := n*( k-1);
jr := n *( i-1);
for j := 1 to n do
begin
jk := jq +j;
hl := A[jk];
ji := jr + j;
A[jk] := - A[ji];
A[ji] := hl;
end;
end;
j := M[k];
if( j =k) then goto L1;
ki := k - n;
for i := 1 to n do
begin
ki := ki + n;
hl := A[ki];
ji := ki - k + j;
A[ki] := - A[ji];
A[ji] := hl;
end;
end; { Ket thuc vong lap thu 2 theo k }
L2:;
End; { Ket thuc ch/ trinh nghich dao ma tran }
{---------------------------------------------------------------------------}
Procedure NEWTS1( var k: integer);
Begin
k := 0;
Repeat
for j := 1 to n do
X1[j] := X[j];
F1( n, X1,Y);
G1( N, X1, A);
NDMT2( n, a, dt);
for j := 1 to n do
begin
X[j] := X1[j];
for i := 1 to n do
begin
nk := j + n*( i -1);
X[j] := X[j] - A[nk] * Y[i];
end;
end;
s := 0.0;
for j := 1 to n do
s := s + ( X[j] - X1[j])*( X[j] - X1[j]);
S := sqrt( s);
if( k > Itmax) then Exit;
K := k + 1;
until( S <= eps);
End;
for j := 1 to n do
begin
X[j] := X1[j];
for i := 1 to n do
begin
nk := j + n*( i -1);
X[j] := X[j] - A[nk] * Y[i];
end;
end;
s := 0.0;
for j := 1 to n do
s := s + ( X[j] - X1[j])*( X[j] - X1[j]);
S := sqrt( s);
if( k > Itmax) then Exit;
K := k + 1;
until( S <= eps);
End;
{---------------------------------------------------------------------------}
{ THAN CHUONG TRINH CHINH }
{---------------------------------------------------------------------------}
{Sinh vien tu viet chuong trinh chinh}
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln(' Chuong trinh giai he phuong trinh phi tuyen bang phuong phap NEWTON -
RAPHSON');
Readln;Writeln;
Repeat
Writeln('Giai he | X - e^(-Y) = 0. Bam 1 de tiep tuc.');
Writeln(' | Y - e^X =0 ');
Writeln;
Writeln('Giai he | X^2 + X - Y^2 - 0.15 = 0. Bam 2 de tiep tuc.');
Writeln(' | X^2 - Y + Y^2 + 0.17 = 0 ');
Writeln;
Writeln('Giai he | X - 0.1Y^2 + 0.05Z^2 = 0.7. Bam 3 de tiep tuc.');
Writeln(' | Y + 0.3X^2 - 0.1XZ = 0.5 ');
Writeln(' | Z + 0.4Y^2 - 0.1XY = 1.2 ');
Writeln;
Write('Xin moi lua chon: ');
Readln(kt);
If kt='1' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;
Writeln(' Chuong trinh giai he phuong trinh phi tuyen bang phuong phap NEWTON -
RAPHSON');
Writeln;
If kt='2' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;
Writeln(' Chuong trinh giai he phuong trinh phi tuyen bang phuong phap NEWTON -
RAPHSON');
Writeln;
Writeln(' Giai he | X^2 + X - Y^2 - 0.15 = 0.');
Writeln(' | X^2 - Y + Y^2 + 0.17 = 0 ');
Writeln;Readln;
n:=2;
Writeln('Nhap vao nghiem gan dung ban dau:');
Write(' X= '); Readln(x[1]);
Write(' Y= '); Readln(x[2]);
Write('Do chinh xac cua qua trinh tim nghiem: ');
Readln(eps);
NEWTS2(k); Writeln;
Write('So lan lap: k= ',k);
Writeln;
Write('Gia tri dinh thuc: DetA= ',dt:6:4);
Readln; Writeln;
Writeln('Nghiem cua he phuong trinh la:');
Writeln(' X= ',x[1]:6:4);
Writeln(' Y= ',x[2]:6:4);
Readln;
Writeln;
Write('Ban co muon giai lai phuong trinh nay khong? (c/k): ');
Readln(kt4);
Until kt4<>'c';
If kt='3' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;
Writeln(' Chuong trinh giai he phuong trinh phi tuyen bang phuong phap NEWTON -
RAPHSON');
Writeln;
Writeln(' Giai he | X - 0.1Y^2 + 0.05Z^2 = 0.7.');
Writeln(' | Y + 0.3X^2 - 0.1XZ = 0.5 ');
Writeln(' | Z + 0.4Y^2 - 0.1XY = 1.2 ');
Writeln;Readln;
n:=3;
Writeln('Nhap vao nghiem gan dung ban dau:');
Write(' X= '); Readln(x[1]);
Write(' Y= '); Readln(x[2]);
Write(' Z= '); Readln(x[3]);
Write('Do chinh xac cua qua trinh tim nghiem: ');
Readln(eps);
NEWTS3(k); Writeln;
Write('So lan lap: k= ',k);
Writeln;
Write('Gia tri dinh thuc: DetA= ',dt:6:4);
Readln; Writeln;
Writeln('Nghiem cua he phuong trinh la:');
Writeln(' X= ',x[1]:6:4);
Writeln(' Y= ',x[2]:6:4);
Writeln(' Z= ',x[3]:6:4);
Readln;
Writeln;
Write('Ban co muon giai lai phuong trinh nay khong? (c/k): ');
Readln(kt5);
Until kt5<>'c';
Writeln;
Write('Ban co muon chay lai tat ca chuong trinh khong? (c/k): ');
Readln(kt1);
Until kt1<>'c';
End.
X. TÍCH PHÂN
Program Tich_phan;
Uses crt;
Const itmax=10;
Pi=3.141592654;
Var x,h,a,b,S0,S1,S2,eps,I1,I2:real;
k,N,dem,j:integer;
kt,kt1,kt2,kt3,kt4,kt5,kt6:char;
Function F1(x:real): Real;
Begin
F1:=X*Ln(X+1);
End;
Function F2(x:real):real;
Begin
F2:=exp(X)*Cos(X);
End;
Procedure TP1(var I:real;N:integer);
Begin
h:=(b-a)/N;
S0:=(F1(a)+F1(b))/2;
S1:=0;
For k:=1 to N-1 do
Begin
X:=a+k*h;
S1:= S1+F1(x);
End;
I:=(S0+S1)*h;
End;
Begin
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln;Readln;
Writeln(' Chuong trinh tinh tich phan theo hai phuong phap.');
Readln;
Writeln('Phuong phap hinh thang. Bam T de tiep tuc.');
Writeln('Phuong phap SIMSON. Bam S de tiep tuc.');
Write('Xin moi lua chon: ');
Readln(kt5);
If kt5='t' then
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln(' Chuong trinh tinh tich phan theo phuong phap hinh thang.');
Readln;
Repeat
Writeln('Tinh tich phan X*Ln(X+1) dX. Bam 1 de tiep tuc.');
Writeln('Tich tich phan e^X*Cos(X) dX. Bam 2 de tiep tuc.');
Write('Xin moi lua chon: '); Readln(kt3);Writeln;
If kt3='1' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;
Writeln(' Chuong trinh tinh tich phan theo phuong phap hinh thang.');
Writeln(' Tinh tich phan X*Ln(X+1) dX.');
Readln;
Writeln('Nhap vao gia tri can tren va can duoi cua tich phan:');
Readln;
Write('Can duoi: A= '); Readln(a);
Write('Can tren: B= '); Readln(b);
Write('Nhap vao sai so cho phep: '); Readln(eps);
N:=1; dem:=0;
Repeat
TP1(I1,N);
N:=2*N;
TP1(I2,N);
N:=N+1; Dem:=dem+1;
If dem>itmax then
Begin
Writeln;
Writeln('Ban muon ket qua co do chinh xac cao?');
Writeln('Sai so qua nho se khien chuong trinh chay mat nhieu thoi gian.');
Write('Ban muon tiep tuc? (c/k): ');
Readln(kt);Writeln;
If kt<>'c' then break
Else
Repeat
TP1(I1,N);
N:=2*N;
TP1(I2,N);
N:=N+1; Dem:=dem+1;
Until abs((I1-I2)/I1)<=eps;
If kt<>'c' then break;
End;
Until abs((I1-I2)/I1)<=eps;
Writeln;
If dem<= itmax then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
If (dem> itmax) and (kt='c') then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
Writeln;Readln;
Write('Ban co muon tinh lai tich phan nay khong? (c/k): ');
Readln(kt1);Writeln;
Until kt1<>'c';
If kt3='2' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;
Writeln(' Chuong trinh tinh tich phan theo phuong phap hinh thang.');
Writeln(' Tinh tich phan e^X*Cos(X) dX.');
Readln;
Writeln('Nhap vao gia tri can tren va can duoi cua tich phan:');
Readln;
Write('Can duoi: A= '); Readln(a);
Write('Can tren: B= Pi/'); Readln(b);
Write('Nhap vao sai so cho phep: '); Readln(eps);
N:=1; B:=Pi/B; dem:=0;
Repeat
TP2(I1,N);
N:=2*N;
TP2(I2,N);
N:=N+1; Dem:=dem+1;
If dem>itmax then
Begin
Writeln;
Writeln('Ban muon ket qua co do chinh xac cao?');
Writeln('Sai so qua nho se khien chuong trinh chay mat nhieu thoi gian.');
Write('Ban muon tiep tuc? (c/k): ');
Readln(kt);Writeln;
If kt<>'c' then break
Else
Repeat
TP2(I1,N);
N:=2*N;
TP2(I2,N);
N:=N+1; Dem:=dem+1;
Until abs((I1-I2)/I1)<=eps;
If kt<>'c' then break;
End;
Until abs((I1-I2)/I1)<=eps;
Writeln;
If dem<= itmax then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
If (dem> itmax) and (kt='c') then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
Writeln;Readln;
Write('Ban co muon tinh lai tich phan nay khong? (c/k): ');
Readln(kt1);Writeln;
Until kt1<>'c';
Write('Ban co muon tinh lai tat ca tich phan khong? (c/k): ');
Readln(kt4);Writeln;
Until kt4<>'c';
End;
If kt5='s' then
Begin
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;Readln;
Writeln(' Chuong trinh tinh tich phan theo phuong phap SIMSON.');
Readln;
Repeat
Writeln('Tinh tich phan X*Ln(X+1) dX. Bam 1 de tiep tuc.');
Writeln('Tich tich phan e^X*Cos(X) dX. Bam 2 de tiep tuc.');
Write('Xin moi lua chon: '); Readln(kt3);Writeln;
If kt3='1' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;
Writeln(' Chuong trinh tinh tich phan theo phuong phap SIMSON.');
Writeln(' Tinh tich phan X*Ln(X+1) dX.');
Readln;
Writeln('Nhap vao gia tri can tren va can duoi cua tich phan:');
Readln;
Write('Can duoi: A= '); Readln(a);
Write('Can tren: B= '); Readln(b);
Write('Nhap vao sai so cho phep: '); Readln(eps);
N:=1; dem:=0;
Repeat
TP3(I1,N);
N:=2*N;
TP3(I2,N);
N:=N+1; Dem:=dem+1;
If dem>itmax then
Begin
Writeln;
Writeln('Ban muon ket qua co do chinh xac cao?');
Writeln('Sai so qua nho se khien chuong trinh chay mat nhieu thoi gian.');
Write('Ban muon tiep tuc? (c/k): ');
Readln(kt);Writeln;
If kt<>'c' then break
Else
Repeat
TP3(I1,N);
N:=2*N;
TP3(I2,N);
N:=N+1; Dem:=dem+1;
Until abs((I1-I2)/I1)<=eps;
If kt<>'c' then break;
End;
Until abs((I1-I2)/I1)<=eps;
Writeln;
If dem<= itmax then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
If (dem> itmax) and (kt='c') then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
Writeln;Readln;
Write('Ban co muon tinh lai tich phan nay khong? (c/k): ');
Readln(kt1);Writeln;
Until kt1<>'c';
If kt3='2' then
Repeat
Clrscr;
Writeln(' Nguoi viet chuong trinh: Tran Van Bay');
Writeln(' Lop : KTHH 7 K56 ');
Writeln(' MSSV : 20112782');
Writeln; Writeln; Writeln;
Writeln(' Chuong trinh tinh tich phan theo phuong phap SIMSON.');
Writeln(' Tinh tich phan e^X*Cos(X) dX.');
Readln;
Writeln('Nhap vao gia tri can tren va can duoi cua tich phan:');
Readln;
Write('Can duoi: A= '); Readln(a);
Write('Can tren: B= Pi/'); Readln(b);
Write('Nhap vao sai so cho phep: '); Readln(eps);
N:=1; B:=Pi/B; dem:=0;
Repeat
TP4(I1,N);
N:=2*N;
TP4(I2,N);
N:=N+1; Dem:=dem+1;
If dem>itmax then
Begin
Writeln;
Writeln('Ban muon ket qua co do chinh xac cao?');
Writeln('Sai so qua nho se khien chuong trinh chay mat nhieu thoi gian.');
Write('Ban muon tiep tuc? (c/k): ');
Readln(kt);Writeln;
If kt<>'c' then break
Else
Repeat
TP4(I1,N);
N:=2*N;
TP4(I2,N);
N:=N+1; Dem:=dem+1;
Until abs((I1-I2)/I1)<=eps;
If kt<>'c' then break;
End;
Until abs((I1-I2)/I1)<=eps;
Writeln;
If dem<= itmax then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
If (dem> itmax) and (kt='c') then Write('Ket qua tinh tich phan: ',(I1+I2)/2:6:4);
Writeln;Readln;
Write('Ban co muon tinh lai tich phan nay khong? (c/k): ');
Readln(kt1);Writeln;
Until kt1<>'c';
Write('Ban co muon tinh lai tat ca tich phan khong? (c/k): ');
Readln(kt4);Writeln;
Until kt4<>'c';
End;
Write('Ban muon chay lai chuong trinh khong? (c/k): ');
Readln(kt6);
Until kt6<>'c';
End.
Program Chung_don_gian;
Uses Crt;
Const itmax=10;
Const nmax = 50;
mr=46;
mn=18;
Type
mx = array[0..nmax] of real;
Var
x2,xf,xw,xp,y2,af,ap,aw,f,w,p,m1,m2,hx,s,s0,s1,Tp,xfkl,xwkl :real;
i,j,k,n,ncb,dem :integer;
x,y,t,xa,cpa,xh,dh,tr,rb,ra,ff : mx;
kt,kt1,kt2,kt3:char;
{----------------------------------------------------------------------}
Procedure Noisuy ( x2: real; Var y2 : real; Y,X : mx; n : integer);
Begin
k := 0;y2:=0;
Repeat
k := k + 1;
Until( x2<= X[k]);
y2 := ((x2-x[k-1])*(y[k]-y[k-1]))/(x[k]-x[k-1]) + y[k-1];
end;
{---------------------------------------------------------------------------}
Procedure SOLIEU;
{ Can bang pha cua he Ethylic - Nuoc }
Begin
M1 := 46.0; M2 := 18.0;