(2.3.2)
Где
– площадь малой трапеции высоты h.Теперь основываясь на методе трапеций разработаем прикладную программы для численного решения уравнения (1.1).
3. Алгоритм. Описание алгоритма
3.1 Алгоритм основной программы
Алгоритм начинается с ввода функции и количества шагов интегрирования. Затем задаётся цикл по m, внутри которого происходит вычисление уравнение.
Внутри внешнего цикла по m задаётся цикл по
. В теле внутреннего цикла приводится численное решение интеграла (2.3.1) по средству процедуры . После чего вычисляется значение V. В конце внутреннего цикла после всех вычислений выводятся значения m, V и .Таким образом вычисляется уравнение при каждом значении
, после чего присваивается новое значение .Заканчивается алгоритм после решения уравнения для каждого значения m.
В данной процедуре происходит непосредственное численное интегрирование методом трапеций.
Задаётся цикл по количеству шагов интегрирования, затем вычисляется площадь каждой малой трапеции и все их площади суммируются.
Выводится вся площадь подынтегральной функции в заданных пределах интегрирования, после чего процедура заканчивается.
Program volnovod;
VAR a,Ytm, h, s,s1,k,bm,v:extended; n,I,m:Longint;
CONST p=3.14159265;
FUNCTION F(y:real):real;
BEGIN
F:=sqrt(exp(-(y*y))-bm);
END;
PROCEDURE TRAP;
BEGIN
H:=(Ytm-A)/N;
s1:=0;
FOR i:=1 TO N-1 do
BEGIN
K:=(F(A)+F(A+H))/2; s:=k*h; A:=A+h; s:=s+s1; s1:=s;
END;
END;
BEGIN
FOR m:=1 TO 5 do
BEGIN
bm:=0.02;
WHILE bm<=0.9 DO
BEGIN
A:=0:
Ytm:=sqrt(-LN(bm));
Write(‘N=’);
Read(N);
TRAP;
V:=((m*p)+((3/4)*p))/s;
If V<=40 then begin
Writeln(‘m=’,m); Writeln(‘V=’,V); Writeln(‘bm=’,bm); end;
bm:=bm+0.0001;
END; END; END.
4.2 Описание прикладной программы
Принцип работы прикладной программы полностью соответствует, приведённому выше, алгоритму. Программа написана в среде Turbo Pascal 7.0.
В результате работы программы решается уравнении для каждого значения m, т.е. вычисляется зависимость
от .Программа начинается с названия и задания, используемых переменных, после чего идёт описание функции.
Следующим шагом создания программы является описание процедуры вычисления площади подынтегральной функции (численное интегрирование). После процедуры начинается тело основной программы.
Внутри основной программы задаются два цикла, описываемых выше, внутри которых происходят все вычисления.
Сначала задаются пределы интегрирования и шаг интегрирования, после чего при помощи описанной выше процедуры вычисляется интеграл.
Зная значение, вычисленного интеграла, рассчитываем значение
и выводим соответствующие значения , и .И таким образом все выше описанные операции повторяются циклически.
5. Дублирование вычислений в среде SciLab
5.1 Листинг вычислений в SciLab
i=1;
m=0;
for bm=0.02:0.0001:0.9
a=0;
b=sqrt(-log(bm));
y=a:0.001:b;
f=sqrt(exp(-(y^2))-bm);
r=inttrap(y,f);
V=((m*%pi)+((3/4)*%pi))/r;
d(i)=V;
w(i)=bm;
i=i+1;
end
plot(d,w);
i=1;
m=1;
for bm=0.02:0.0001:0.9
a=0;
b=sqrt(-log(bm));
y=a:0.001:b;
f=sqrt(exp(-(y^2))-bm);
r=inttrap(y,f);
V=((m*%pi)+((3/4)*%pi))/r;
d(i)=V;
w(i)=bm;
i=i+1;
end
plot(d,w);
i=1;
m=2;
for bm=0.02:0.0001:0.9
a=0;
b=sqrt(-log(bm));
y=a:0.001:b;
f=sqrt(exp(-(y^2))-bm);
r=inttrap(y,f);
V=((m*%pi)+((3/4)*%pi))/r;
d(i)=V;
w(i)=bm;
i=i+1;
end
plot(d,w);
i=1;
m=3;
for bm=0.02:0.0001:0.9
a=0;
b=sqrt(-log(bm));
y=a:0.001:b;
f=sqrt(exp(-(y^2))-bm);
r=inttrap(y,f);
V=((m*%pi)+((3/4)*%pi))/r;
d(i)=V;
w(i)=bm;
i=i+1;
end
plot(d,w);
i=1;
m=4;
for bm=0.02:0.0001:0.9
a=0;
b=sqrt(-log(bm));
y=a:0.001:b;
f=sqrt(exp(-(y^2))-bm);
r=inttrap(y,f);
V=((m*%pi)+((3/4)*%pi))/r;
d(i)=V;
w(i)=bm;
i=i+1;
end
plot(d,w);
i=1;
m=5;
for bm=0.02:0.0001:0.9
a=0;
b=sqrt(-log(bm));
y=a:0.001:b;
f=sqrt(exp(-(y^2))-bm);
r=inttrap(y,f);
V=((m*%pi)+((3/4)*%pi))/r;
d(i)=V;
w(i)=bm;
i=i+1;
end
plot(d,w);
5.2 Описание вычислений в среде SciLab
Дублирование вычислений происходило при помощи программирования в SciLab. Задаётся цикла по
, внутри которого прописываем пределы интегрирования и подынтегральная функция, затем вычисляется интеграл и значение при заданном значении .Каждое вычисленное значение v и соответствующее значение
заносятся в отдельные массивы чисел, по которым далее строится график дисперсионной кривой для заданного значения .Эта операция повторяется для каждого значения
от 0 до 5.Рис. 6.1 Семейство дисперсионных кривых в среде SciLab.
7. Заключение по проделанной работе
В ходе проделанной работы была изучена литература, описывающая численные методы, программирование в среде Free Pascal и SciLab.
Также изучена литература, описывающая физическую интерпретацию данного уравнения.
С помощью среды SciLab были проверены вычисления, проводимые в прикладной программе. Эта проверка показала достаточно высокую точность вычислений прикладной программы. Значения, полученные в среде SciLab, отличаются от вычислений прикладной программы примерно на одну тысячную. Это позволяет судить о достаточно высокой точности вычислений прикладной программы и соответственно о точности вычислений интеграла методом трапеций, который использовался в прикладной программе.
8. Список используемой литературы
8.1. Сергиевский М.В., Шалашов А.В., Турбо паскаль 7.0., Язык, среда, программирования. – М.:Машиностроение. – 1994. – 254с.
8.2 Мудров А.Е., Численные методы для ПЭВМ на языках Бэйсик, Фортран и Паскаль. – Томск : МП «РАСКО», 1991. – 272с.
8.3