phương pháp giải lặp NewtonRaphson 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

13 543 0
phương pháp giải lặp NewtonRaphson 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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

MỞ ĐẦU Các toán thực tế dẫn đến việc cần phải giải phương trình phi tuyến, nhiên, phương trình thường phức tạp, nói chung khó giải (đưa phương trình bản) biến đổi đại số Hơn nữa, công thức nghiệm 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 tính chất nghiệm qua công thức gặp phải nhiều khó khăn Vì vậy, từ thời Archimedes, phương pháp giải gần xây dựng phương pháp NewtonRaphson giải gần phương trình phi tuyến trở thành kinh điển sử dụng rộng rãi thực tế Tuy nhiên, để giải phương trình tay giấy, có phải hàng ngày với sai sót dễ xảy song với phát triển công cụ tin học công việc cần thực vài phút chí vài giây phương pháp giải gần lại có ý nghĩa thực tế lớn Nghiên cứu phát triển khoa học xem vấn đề quan trọng hàng đầu việc định hướng phát triển toàn xã hội Các sở máy móc, thiết bị phòng thí nghiệm trang bị đầy đủ không ngừng cải tiến nhằm tạo nhiều điều kiện thuận lợi cho người làm khoa học Tuy nhiên thực tế lúc có đủ điều kiện cần thiết để thực thí nghiệm mong muốn Lúc máy tính đóng vai trò công cụ thực hữu ích Sự xuất máy tính không dùng việc nghiên cứu, phân tích, đo đạc kết thực nghiệm mà sử dụng công cụ để mô thí nghiệm, cung cấp cho kết mà thí nghiệm túy thường gặp phải nhiều khó khăn hạn chế trình thực Hóa học phân tích môn học nghiên cứu xây dựng, phát triển ứng dụng 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 phương pháp hóa học với phương pháp: phân tích hóa học định lượng phân tích hóa học định tính Tuy nhiên đòi hỏi phát triển kinh tế xã hội, giao lưu thương mại toàn cầu, phương pháp hóa học dùng phân tích không đáp ứng sức ép ngày tăng lên cần có kết phân tích đáng tin cậy Vì bên cạnh phương pháp hóa học người ta sử dụng phương pháp vật lí, sinh học toán học Ngôn ngữ lập trình Pascal 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 phương pháp toán học ngôn ngữ Pascal việc tính toán kết phân tích định lượng cần thiết, đặc biệt việc xác định nồng độ cân ion dung dịch Vì tiểu luận 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 ion dung dịch” áp dụng tính toán với toán cân tạo phức dung dịch Cu2+ EDA ( Ethylenediamine C2H4(NH2)2.) I CƠ SỞ LÝ THUYẾT Lý thuyết toán hóa học Xét tạo phức dung dịch kim loại M với phối tử L, ion phân tử có khả tạo lien kết cho nhận với kim loại M M + nL → MLn Trong toán chẳng hạn ta xét cụ thể cân tạo phức dung dịch Cu2+ EDA có dạng: (1) Cu2+ + EDA → CuEDA2+ (2) CuEDA2+ + EDA → Cu(EDA)22+ K1 K2 Cho biết nồng độ mol ban đầu Cu 2+ C1 EDA C2 Tính nồng độ cân ion phân tử trung hòa trình chuẩn độ Cu 2+ EDA? Bài giải Cân (1) (2) viết lại dạng sau: 2Cu2+ + 3EDA → CuEDA2+ + Cu(EDA)22+ C0 C1 C2 0 [C] C1 – x – y C2 – x – 2y x y Ta có phương trình liên hệ sau: K1 = [Cu 2+ ].[EDA] (C -x-y)(C2 -x-2y) = 2+ [CuEDA ] x K2 = x(C2 -x-2y) [Cu 2+ ].[EDA] = 2+ y [Cu(EDA) ] Khi đó: y= (C2 -x)x K +2x (C2 -2x)(K +2x)-2(C x-x ) y’ = (K +2x) Từ ta qui phương trình ẩn, tìm x suy nồng độ cân ion Hệ phức Men+ với m phối tử X Trong dung dịch phức với m=6, đạt tới cân 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 cần phải giải hệ 11 phương trình tuyến tính, m phương trình dạng:  MX in −i  Ki =  MX in−+11−i  +  X −  Và phương trình lại là: HX = H+ + XH2O = H+ + OHm Mtotal = [ Mn+] + ∑  MX i =1 n −i i  m Mtotal = [X-] + [HX] + ∑ i  MX i =1 n −i i  m + + - - n+ [H ] + [Na ] – [ClO ] – [OH ] – [X ] + n[M ] + ∑ (n − 1)  MX i =1 n −i i  = Na+ nằm thành phần muối NaX (có nồng độ C x) ClO4- nằm thành phần muối M(ClO4)n (có nồng độ Cm) Hệ phương trình viết dạng: i  MX in −i  = βi  M n +  ×  X −  với β I = K1 K2 … Ki     Nếu ký hiệu [X-], [Mn+] [H+] x,y,z ba ẩn số xác định từ phương trình cân vật chất bảo toàn điện tích: F(x,y,z) = x + xz m + ∑ i βi yx i − C x = K a i =1 m i G(x,y,z) = y + ∑ β i yx − Cm = i =1 H(x,y,z) = z + C x m Kw − nCm − x − ny + ∑ (n − i )yx i β i = z i =1 Ka Kw số phân li axit HX nước Thuật toán Phương pháp Newton-Raphson Còn gọi phương pháp Newton hay phương pháp tiếp tuyến Phương pháp Newton-Raphson giải (hệ) phương trình thực cách xấp xỉ dần giá trị nghiệm thông qua dãy số hội tụ giá trị thật nghiệm Nguyên tắc phương pháp nghiệm gần thứ i+1của phương trình F(x)= tính gần thứ i theo hệ thức sau với điều kiện F khả vi x i F’(x) # xi +1 = xi − F ( xi ) F '( xi ) Trong trường hợp tổng quát lúc hệ phương trình phi tuyến quy phương trình ẩn Lúc phải giải toán hệ phương trình phi tuyến Ta xét nguyên tắc phương pháp giả trường hợp riêng hệ phương trình ẩ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, hệ nghiệm gần bước lặp thứ i hệ nghiệm gần bước lặp thứ i+1 xác định bởi: xi+1 = xi + ∆ x yi+1 = yi + ∆ y zi+1 = zi + ∆ z ∆ x, ∆ y, ∆ z xác định từ hệ thức D = A-1XB Với  − Fi  B =  −Gi   − H i   ∆x  D =  ∆y   ∆z   − Fx F ' y F 'z  i i  i  A =  −Gxi G ' yi G 'zi     − H x H ' y H 'z  i i i   Điều kiện để giải lặp hệ phương trình phi tuyến phương pháp NewtonRaphson hàm F, G, H phải khả vi với biến Việc tính đạo hàm riêng F, G, H, thực PROCEDURE FFF Tiêu chuẩn hội tụ chương trình là: Delsum = ∆x ∆y ∆z + + x y z Phương pháp hệ phương trình tuyến tính Hệ phương trình phi tuyến giải theo cách quy hệ phương trình tuyến tính khai triển Taylor hàm F, G, H ∂F ∂F = ∂xi ∂x x = xi Fi + h ∂F ∂F ∂F +k +l + = ∂xi ∂yi ∂zi Gi + h ∂G ∂G ∂G +k +l + = ∂xi ∂yi ∂zi Hi + h ∂H ∂H ∂H +k +l + = ∂xi ∂yi ∂zi = F ' xi Fi=F(xi, yi, zi) Khi bỏ qua số hạng bậc cao hệ phương trình tuyến tính: hF 'xi + kF ' yi + lF 'zi = − F 'i hG 'xi + kG ' yi + lG 'zi = −G 'i hH 'xi + kH ' yi + lH 'zi = − H 'i Sử dụng PROCEDURE giải hệ phương trình tuyến tính tính nghiệm xi+1 = xi + h yi+1 = yi + k zi+1 = zi + l II CHƯƠNG TRÌNH Chương trình chạy program GHPTPT; (*khai trien taylor *) uses crt; type m2 = array[1 10,1 10] of real; m1 = array[1 10] of real; ft=text; var i,k,n,j,d,dem : integer; mtbb,mtcc,bb,b : m2; x,f,dd : m1; 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 begin for j:=1 to n 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;} procedure ghpttt(a:m2;n:integer; VAR xx:m1); label 10; var i , j, k : integer; kk,ak,test : real; aa : m2; Begin for i:=1 to n for k:=1 to n+1 aa[i,k]:=a[i,k]; for i := to n (* Khu x[i] *) Begin kk:=aa[i,i]; for j :=i to n + Begin aa[i,j] :=aa[i,j]/kk; end; if i=n then goto 10; for k:= i+1 to n begin for j:= i+1 to n+1 aa[k,j]:=aa[k,j]-aa[k,i]*aa[i,j]; end; end; 10: xx[n] := aa[n,n+1]; Writeln (' Nghiem cua phuong trinh'); Writeln (' Xx[',n,']= ', xx[n]); for i := (n - 1) downto Begin ak:=0; for j := i + to n Begin ak := ak + xx[j] * aa[i,j]; end; XX[i] := aa[i,n+1] - ak; Writeln (' XX[',I,']= ',XX[i]); end; (* thu lai nghiem cua pt *) writeln(' Thu lai nghiem cua phuong trinh '); for i:=1 to n begin test:=0; for j:=1 to n begin test:= aa[i,j]*xx[j]+test; end; 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 i : integer; begin for i:=1 to n x[i]:=x[i]-d[i]; end; BEGIN (* chuong trinh chinh *) clrscr; assign(f1,'input1.txt'); rewrite(f1); writeln('**THANH HA - xac dinh nong can bang cua ion 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 Cu2+=');readln(C1); write('nhap nong 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 Cu2+=');write(f1,C1:10:4); writeln(f1,''); write(f1,'nhap nong 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 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; Repeat inc(dem); xdmt(x,n,mtbb);readln; for i:=1 to n for k:=1 to n b[i,k]:=mtbb[i,k]; for i:=1 to n b[i,n+1]:=f[i]; ghpttt(b,n,dd); hmt(dd,n,x); delta:=0; for i:=1 to n delta:=delta+abs (dd[i]/x[i]); writeln('delta = ',delta); readln; until delta < esp; writeln(' gia tri cua nghiem '); for i:=1 to n 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 10 Kết 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 11 Nghiem 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: Biện luận kết Kết thu gần với kết thực, cho thấy ưu điểm phương pháp Như phương pháp giải lặp gần đúng, ta xác định nồng độ cân ion dung dịch cách đơn giản xác Chương trình cho phép tính toán nồng độ cân ion dung dịch áp dụng hệ cân tạo phức, acid, base, oxi hóa khử, … Việc xác định nồng độ cân ion dung dịch cách giải gần có ý nghĩa lớn việc phân tích, kiểm nghiệm Áp dụng thuật toán với hệ cân phức tạp tiết kiệm nhiều thời gian công sức 12 III KẾT LUẬN Như việc áp dụng thuật toán giải lặp vào toán hóa học cho phép xác định nồng độ cân ion dung dịch cách dễ dàng với hệ cân phức tạp Qua cho thấy ứng dụng toán học, vật lý, sinh học vào hóa học ngày có vai trò quan trọng thu kết xác nhanh chóng 13 [...]... 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... 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 12 III 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,... 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 13 ... biệt việc xác định nồng độ cân ion dung dịch Vì tiểu luận 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 ion dung dịch áp... thấy ưu điểm phương pháp Như phương pháp giải lặp gần đúng, ta xác định nồng độ cân ion dung dịch cách đơn giản xác Chương trình cho phép tính toán nồng độ cân ion dung dịch áp dụng hệ cân tạo phức,... chương trình là: Delsum = ∆x ∆y ∆z + + x y z Phương pháp hệ phương trình tuyến tính Hệ phương trình phi tuyến giải theo cách quy hệ phương trình tuyến tính khai triển Taylor hàm F, G, H ∂F ∂F

Ngày đăng: 29/03/2016, 23:07

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan