Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Часть №2
КАФЕДРА ВЫСШЕЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ Численные методы(ХТОВ)
ЛАБОРАТОРНАЯ РАБОТА №6
Диффузия сопроваждающаяся химической реакцией
Студент: Ибраимбек Арайлым Преподаватель: Рысбайұ лы Б.
Алматы 2012г.
Часть №1 (Метод Томаса) Программа program arai6_1; uses crt; const k=2.7; D0=2.93; l=7.7; A0=0.0107; B0=0.36; n=10; Dx=l/n; Var i: integer; Kfl, a, Ma, Si: real; f1, f2: text; d, Y, Alf, Vet: array [0..n] of real; function Sh(x: real): real; begin Sh: =(exp(x)-exp(-x))/2; end; function C(x: real): real; Begin C: =(B0*Sh(a*x)+A0*Sh(a*(l-x)))/Sh(a*l); end; {koeff. metoda Tomasa} begin a: =sqrt(k/d0); Alf[n-1]: =0; Vet[n-1]: =B0; Kfl: =sqr(a*dx); for i: =n-1 downto 1 do begin Alf[i-1]: =1/(2+Kfl-alf[i]); vet[i-1]: =vet[i]/(2+Kfl-alf[i]); end; {pribl. znachenie primesi} y[0]: =A0; y[n]: =B0; for i: =1 to n-2 do y[i+1]: =Alf[i]*y[i]+vet[i]; {proverka tochnosti metoda } for i: =1 to n-1 do D[i]: =Abs(C(I*dx)-y[i]); Ma: =0; Si: =0; For i: =1 to n-1 do Ma: =Ma+D[i]/(n-1); for i: =1 to n-1 do Si: =Si+sqr(Ma-D[i])/(n-1); Si: =Sqrt(si); Writeln('n=', n, ' Ma=', Ma: 6: 6, ' Si=', Si: 6: 6); Assign (f1, 'out1.dat'); Assign (f2, 'out2.dat'); Rewrite(f1); Rewrite(f2); for i: =0 to n do writeln (f1, C(i*dx): 6: 4); for i: =0 to n do writeln(f2, y[i]: 6: 4); close(f1); close(f2); end.
Часть №2 program arai6_2; uses crt; const l=7.7; A0=0.0107; B0=0.36; n=10; Dx=l/n; var i: integer; f11: text; y, Alf, Vet: array[0..n] of real; function p(x: real): real; begin p: =exp(-x); end; function q(x: real): real; begin q: =exp(x); end; begin y[0]: =A0; y[n]: =B0; Alf[n-1]: =0; VET[n-1]: =B0; For i: =n-1 downto 1 do begin alf[i-1]: =1/(2+p(i*dx)*sqr(dx)-alf[i]); vet[i-1]: =(Vet[i]-q(i*dx)*sqr(dx))/(2+p(i*dx)*sqr(dx)-alf[i]); end; for i: =0to n-2 do y[i+1]: =alf[i]*y[i]+vet[i]; assign (f11, 'out11.dat'); rewrite (f11); for i: =0 to n do writeln(f11, y[i]: 6: 4); close(f11); end.
|