Vì vậy, ngay từ thời Archimedes, các phương pháp giải gần đúng đã được xây dựng trong đó phương pháp Newton-Raphson giải gần đúng phương trình phi tuyến đã trở thành kinh điển và được sử
Trang 1MỞ ĐẦU
Các bài toán thực tế dẫn đến việc cần phải giải các phương trình phi tuyến, tuy nhiên, các phương trình này thường phức tạp, do đó nói chung khó có thể giải được (đưa được về các phương trình cơ bản) bằng các biến đổi đại số Hơn nữa, vì các công thức nghiệm của phương trình phi tuyến thường phức tạp, cồng kềnh, nên cho dù có công thức nghiệm, việc khảo sát các tính chất nghiệm qua công thức cũng vẫn gặp phải rất nhiều khó khăn Vì vậy, ngay từ thời Archimedes, các phương pháp giải gần đúng đã được xây dựng trong đó phương pháp Newton-Raphson giải gần đúng phương trình phi tuyến đã trở thành kinh điển và được sử dụng rộng rãi trong thực tế Tuy nhiên, để giải một phương trình bằng tay trên giấy, có khi phải mất hàng ngày với những sai sót dễ xảy ra song với sự phát triển của công cụ tin học công việc này chỉ cần thực hiện trong vài phút thậm chí vài giây và các phương pháp giải gần đúng lại càng có ý nghĩa thực tế lớn
Nghiên cứu và phát triển khoa học luôn được xem là một trong những vấn
đề quan trọng hàng đầu trong việc định hướng sự phát triển của toàn xã hội Các
cơ sở máy móc, thiết bị trong các phòng thí nghiệm luôn được trang bị đầy đủ và không ngừng cải tiến nhằm tạo nhiều điều kiện thuận lợi hơn cho người làm khoa học Tuy nhiên trong thực tế không phải lúc nào chúng ta cũng có đủ các điều kiện cần thiết để thực hiện các thí nghiệm như mong muốn Lúc này máy tính đóng vai trò là một công cụ thực sự hữu ích Sự xuất hiện của máy tính không chỉ dùng trong việc nghiên cứu, phân tích, đo đạc các kết quả thực nghiệm mà nó còn được
sử dụng như một công cụ để mô phỏng thí nghiệm, cung cấp cho chúng ta những kết quả mà các thí nghiệm thuần túy thường gặp phải nhiều khó khăn và hạn chế trong quá trình thực hiện
Hóa học phân tích là môn học nghiên cứu xây dựng, phát triển và ứng dụng các phương pháp cho phân tích hóa học Hóa phân tích lúc ban đầu chủ yếu dựa vào các phương pháp hóa học với các phương pháp: phân tích hóa học định lượng
và phân tích hóa học định tính
Trang 2Tuy nhiên do đòi hỏi của sự phát triển kinh tế xã hội, sự giao lưu thương mại toàn cầu, các phương pháp hóa học dùng trong phân tích đã không đáp ứng được sức ép ngày một tăng lên là cần có một kết quả phân tích đáng tin cậy Vì vậy bên cạnh các phương pháp hóa học người ta còn sử dụng các phương pháp vật
lí, sinh học và cả toán học
Ngôn ngữ lập trình Pascal là một ngôn ngữ lập trình bậc cao có cấu trúc rõ ràng làm cho người dùng dễ sử dụng Do đó việc áp dụng các phương pháp toán học và ngôn ngữ Pascal trong việc tính toán kết quả phân tích định lượng là hết sức cần thiết, đặc biệt là trong việc xác định nồng độ cân bằng các ion trong dung dịch
Vì vậy trong tiểu luận này tôi đã chọn đề tài là: “Áp dụng phương pháp giải
lặp Newton-Raphson giải hệ phương trình phi tuyến để xác định nồng độ cân bằng của các ion trong dung dịch” và áp dụng tính toánvới bài toán cân bằng tạo phức trong dung dịch Cu2+ và EDA( Ethylenediamine C2H4(NH2)2.)
Trang 3I CƠ SỞ LÝ THUYẾT
1 Lý thuyết bài toán hóa học.
Xét sự tạo phức trong dung dịch của một kim loại M với các phối tử L, đây
là các ion hoặc phân tử có khả năng tạo lien kết cho nhận với kim loại M
Trong bài toán này chẳng hạn ta xét cụ thể cân bằng tạo phức trong dung dịch Cu2+ và EDA có dạng:
(1) Cu2+ + EDA → CuEDA2+ K1
(2) CuEDA2+ + EDA → Cu(EDA)22+ K2
Cho biết nồng độ mol ban đầu của Cu2+ là C1 và của EDA là C2 Tính nồng
EDA?
Bài giải
Cân bằng (1) và (2) được viết lại dưới dạng sau:
2Cu2+ + 3EDA → CuEDA2+ + Cu(EDA)22+
C0 C1 C2 0 0
[C] C1 – x – y C2 – x – 2y x y
Ta có các phương trình liên hệ sau:
Khi đó:
y =
y’ =
Từ đó ta có thể qui về phương trình 1 ẩn, tìm x và suy ra nồng độ cân bằng của các ion
Trang 4Hệ phức Me n+ với m phối tử X
Trong dung dịch phức với m=6, khi đạt tới cân bằng có 11 laọi tiểu phân
Mn+, MXn-1, MXn-2, MXn-3, MXn-4, MXn-5, MXn-6, H+, OH-, X-, HX Để tìm nồng độ cân bằng chúng ta cần phải giải hệ 11 phương trình tuyến tính, trong đó m phương trình dạng:
Và 5 phương trình còn lại là:
HX = H+ + X
-H2O = H+ + OH
-Mtotal = [ Mn+] +
Mtotal = [X-] + [HX] +
trong thành phần muối M(ClO4)n (có nồng độ Cm)
Hệ phương trình trên đây có thể viết dưới dạng:
Nếu ký hiệu [X-], [Mn+] và [H+] là x,y,z thì ba ẩn số này được xác định từ 3 phương trình cân bằng vật chất và bảo toàn điện tích:
G(x,y,z) =
trong đó Ka và Kw là hằng số phân li của axit HX và của nước
Trang 52 Thuật toán.
Phương pháp Newton-Raphson
Còn gọi là phương pháp Newton hay phương pháp tiếp tuyến Phương pháp Newton-Raphson giải một (hệ) phương trình thực bằng cách xấp xỉ dần giá trị của nghiệm thông qua một dãy số hội tụ về giá trị thật của nghiệm
Nguyên tắc của phương pháp là nghiệm gần đúng thứ i+1của phương trình F(x)= 0 có thể tính gần đúng thứ i theo hệ thức sau đây với điều kiện F khả vi tại xi
và F’(x) # 0
Trong trường hợp tổng quát không phải lúc nào hệ phương trình phi tuyến cũng quy được về phương trình 1 ẩn Lúc đó chúng ta phải giải bài toán hệ phương trình phi tuyến
Ta xét nguyên tắc của phương pháp giả trên một trường hợp riêng của hệ 3 phương trình 3 ẩn số sau đây:
F(x,y,z)=0
G(x,y,z)=0
H(x,y,z)=0
Nếu gọi xi, yi, zi, là hệ nghiệm gần đúng trong bước lặp thứ i thì hệ nghiệm gần đúng trong bước lặp thứ i+1 được xác định bởi:
xi+1 = xi + x
yi+1 = yi + y
zi+1 = zi + z trong đó x, y, z được xác định từ hệ thức
D = A-1XB Với
Trang 6Điều kiện để giải lặp hệ phương trình phi tuyến bằng phương pháp Newton-Raphson là các hàm F, G, H phải khả vi với mọi biến
Việc tính đạo hàm riêng của F, G, H, được thực hiện trong PROCEDURE FFF Tiêu chuẩn hội tụ của chương trình là:
Phương pháp hệ phương trình tuyến tính
Hệ phương trình phi tuyến có thể giải được theo cách quy về hệ phương trình tuyến tính khi khai triển Taylor các hàm F, G, H
Khi bỏ qua các số hạng bậc cao hơn 1 chúng ta được hệ phương trình tuyến tính:
Sử dụng PROCEDURE giải hệ phương trình tuyến tính chúng ta có thể tính được nghiệm kế tiếp
Trang 7xi+1 = xi + h
yi+1 = yi + k
zi+1 = zi + l
II CHƯƠNG TRÌNH
1 Chương trình chạy
uses crt;
type
ft=text;
var
delta,esp,K1,K2,C1,C2,CuEDA,CuEDA2,Cu,EDA :real; f1,f2 :ft;
procedure xdmt(x: m1;n:integer; VAR bb:m2);
begin
(* writeln(x[1],x[2]); *)
f[1]:=x[1]*x[1]+3*x[1]*x[2]+2*x[2]*x[2]-(C1+C2+K1)*x[1]-(2*C1+C2)*x[2]+C1*C2;
f[2]:=-x[1]*x[1]-2*x[1]*x[2]+C2*x[1]-K2*x[2];
bb[1,1]:=2*x[1]+3*x[2]-(C1+C2+K1);
bb[1,2]:=3*x[1]+4*x[2]-(2*C1+C2);
bb[2,1]:=-2*x[1]-2*x[2]+C2;
bb[2,2]:=-2*x[1]-K2;
for i:=1 to n do
begin
for j:=1 to n do write(bb[i,j]:10:5);
writeln;
end;
end;
{procedure nghiem(a:m2;n:integer;VAR xx:m1);
Begin
xx[1]:=(a[1,3]*a[2,2]-a[1,2]*a[2,3])/(a[1,1]*a[2,2]-a[1,2]*a[2,1]); xx[2]:=(a[1,1]*a[2,3]-a[2,1]*a[1,3])/(a[1,1]*a[2,2]-a[1,2]*a[2,1]); end;}
Trang 8procedure ghpttt(a:m2;n:integer; VAR xx:m1);
label 10;
Begin
for i:=1 to n do
for k:=1 to n+1 do aa[i,k]:=a[i,k];
for i := 1 to n do
(* Khu x[i] *)
kk:=aa[i,i];
for j :=i to n + 1 do
Begin
aa[i,j] :=aa[i,j]/kk;
end;
if i=n then goto 10;
for k:= i+1 to n do
begin
for j:= i+1 to n+1 do aa[k,j]:=aa[k,j]-aa[k,i]*aa[i,j]; end;
10: xx[n] := aa[n,n+1];
Writeln (' Xx[',n,']= ', xx[n]);
for i := (n - 1) downto 1 do
Writeln (' XX[',I,']= ',XX[i]);
end;
(* thu lai nghiem cua pt *)
writeln(' Thu lai nghiem cua phuong trinh ');
for i:=1 to n do
begin
test:=0;
for j:=1 to n do
begin
test:= aa[i,j]*xx[j]+test;
Trang 9end;
writeln(' test:=':15,test:10:4,' aa[',i,',n+1]:=',aa[i,n+1]:10:4);
end;
end;
procedure hmt(d:m1;n:integer; VAR x:m1);
var
begin
for i:=1 to n do x[i]:=x[i]-d[i];
end;
BEGIN (* chuong trinh chinh *)
clrscr;
assign(f1,'input1.txt');
rewrite(f1);
writeln('**THANH HA - xac dinh nong do can bang cua ion trong dung dich
Cu2+ va EDA**' );
esp:=1.e-8;
write('nhap hang so can bang K1=');readln(K1);
write('nhap hang so can bang K2=');readln(K2);
write('nhap nong do Cu2+=');readln(C1);
write('nhap nong do EDA= ');readln(C2);
writeln('** Chuong trinh ghptpt bang cach khai trien taylor **' );
esp:=1.e-8;
write(f1,'nhap hang so can bang K1=');write(f1,K1:10:4);writeln(f1,'');
write(f1,'nhap hang so can bang K2=');write(f1,K2); writeln(f1,'');
write(f1,'nhap nong do Cu2+=');write(f1,C1:10:4); writeln(f1,'');
write(f1,'nhap nong do EDA= ');write(f1,C2:10:4); writeln(f1,'');
writeln('nhap cac gia tri gan dung ban dau cua he nghiem');
writeln(f1,'nhap cac gia tri gan dung ban dau cua he nghiem');
n:=2;
for i:=1 to n do
begin
write('x[',i,']=?');readln(x[i]);
write(f1,'x[',i,']+?');write(f1,x[i]:10:4);writeln(f1,'');
end;
readln;
close(f1);
dem:=0;
Trang 10Repeat
inc(dem);
xdmt(x,n,mtbb);readln;
for i:=1 to n do
for k:=1 to n do b[i,k]:=mtbb[i,k]; for i:=1 to n do
b[i,n+1]:=f[i];
ghpttt(b,n,dd);
hmt(dd,n,x);
delta:=0;
for i:=1 to n do
delta:=delta+abs (dd[i]/x[i]);
writeln('delta = ',delta); readln;
until delta < esp;
writeln(' gia tri cua nghiem '); for i:=1 to n do write(x[i]:15, ' '); writeln;
writeln;
CuEDA:=x[1];
CuEDA2:=x[2];
Cu:=C1-x[1]-x[2];
EDA:=C2-x[1]-2*x[2];
assign(f2,'ketqua1.txt');
rewrite(f2);
writeln('Cu',Cu:10);
writeln('EDA',EDA:10);
writeln('CuEDA',CuEDA:10);
writeln('CuEDA2',CuEDA2:12); writeln('So lan chay la:',dem);
writeln(f2,'Cu',Cu:10);
writeln(f2,'EDA',EDA:10);
writeln(f2,'CuEDA',CuEDA:10); writeln(f2,'CuEDA2',CuEDA2:12); writeln(f2,'So lan chay la:',dem:10); readln ;
close(f2);
end
Trang 112 Kết quả
Input:
1.0
1.5
0.1
0.5
0.1
0.3
Output
Nghiem cua phuong trinh
XX[2]= 2.0458715596E-01
XX[1]= 4.0733944954E-01
Thu lai nghiem cua phuong trinh
test:= 0.0800 aa[1,n+1]:= 0.0800 test:= 0.0824 aa[2,n+1]:= 0.2046 delta = 3.4696039035E+00
Nghiem cua phuong trinh
XX[2]= 6.3015396282E-02
XX[1]= -2.9962487853E-01
Thu lai nghiem cua phuong trinh
test:= -0.2591 aa[1,n+1]:= -0.2591 test:= -0.2138 aa[2,n+1]:= 0.0630 delta = 4.0783898521E+01
Nghiem cua phuong trinh
XX[2]= 2.3978233923E-02
XX[1]= -3.6428033911E-02
Thu lai nghiem cua phuong trinh
test:= -0.0271 aa[1,n+1]:= -0.0271 test:= 0.0076 aa[2,n+1]:= 0.0240 delta = 4.1167115195E+00
Nghiem cua phuong trinh
XX[2]= -2.2072033137E-04
XX[1]= 1.7899035425E-04
Thu lai nghiem cua phuong trinh
test:= 0.0001 aa[1,n+1]:= 0.0001 test:= -0.0001 aa[2,n+1]:= -0.0002 delta = 3.1819305302E-02
Trang 12Nghiem cua phuong trinh
XX[2]= -2.9102298084E-08
XX[1]= 3.9040997239E-09
Thu lai nghiem cua phuong trinh
test:= -0.0000 aa[1,n+1]:= -0.0000
test:= -0.0000 aa[2,n+1]:= -0.0000
delta = 3.5051563394E-06
Nghiem cua phuong trinh
XX[2]= -1.7537470291E-14
XX[1]= -3.0767439341E-14
Thu lai nghiem cua phuong trinh
test:= -0.0000 aa[1,n+1]:= -0.0000
test:= -0.0000 aa[2,n+1]:= -0.0000
delta = 3.1080636374E-12
Cu 6.283E-02
EDA 4.542E-01
CuEDA 2.853E-02
CuEDA2 8.63996E-03
So lan chay la: 6
3 Biện luận kết quả
Kết quả thu được gần đúng với kết quả thực, cho thấy ưu điểm của phương pháp Như vậy bằng phương pháp giải lặp gần đúng, ta đã xác định được nồng độ cân bằng của các ion trong dung dịch một cách đơn giản và chính xác Chương trình cho phép tính toán nồng độ cân bằng của các ion trong dung dịch bất kì áp dụng trong các hệ cân bằng tạo phức, acid, base, oxi hóa khử, …
Việc xác định được nồng độ cân bằng của các ion trong dung dịch bằng cách giải gần đúng có ý nghĩa rất lớn trong việc phân tích, kiểm nghiệm Áp dụng thuật toán này với những hệ cân bằng phức tạp sẽ tiết kiệm được nhiều thời gian
và công sức
Trang 13III KẾT LUẬN
Như vậy việc áp dụng các thuật toán giải lặp vào bài toán hóa học cho phép chúng ta có thể xác định được nồng độ cân bằng của các ion trong dung dịch một cách dễ dàng với những hệ cân bằng phức tạp Qua đó cho thấy những ứng dụng của toán học, vật lý, sinh học vào hóa học ngày càng có vai trò quan trọng thu được những kết quả chính xác và nhanh chóng hơn