Смекни!
smekni.com

Работа по дисциплине «Информатика» (стр. 3 из 3)

(2.3.2)

Где

– площадь малой трапеции высоты h.

Теперь основываясь на методе трапеций разработаем прикладную программы для численного решения уравнения (1.1).

3. Алгоритм. Описание алгоритма

3.1 Алгоритм основной программы

Алгоритм начинается с ввода функции и количества шагов интегрирования. Затем задаётся цикл по m, внутри которого происходит вычисление уравнение.

Внутри внешнего цикла по m задаётся цикл по

. В теле внутреннего цикла приводится численное решение интеграла (2.3.1) по средству процедуры
. После чего вычисляется значение V. В конце внутреннего цикла после всех вычислений выводятся значения m, V и
.

Таким образом вычисляется уравнение при каждом значении

, после чего присваивается новое значение
.

Заканчивается алгоритм после решения уравнения для каждого значения m.

3.2 Алгоритм процедуры

В данной процедуре происходит непосредственное численное интегрирование методом трапеций.

Задаётся цикл по количеству шагов интегрирования, затем вычисляется площадь каждой малой трапеции и все их площади суммируются.

Выводится вся площадь подынтегральной функции в заданных пределах интегрирования, после чего процедура заканчивается.

4. Прикладная программа

4.1 Листинг программы

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. Дисперсионные кривые

Рис. 6.1 Семейство дисперсионных кривых в среде SciLab.

7. Заключение по проделанной работе

В ходе проделанной работы была изучена литература, описывающая численные методы, программирование в среде Free Pascal и SciLab.

Также изучена литература, описывающая физическую интерпретацию данного уравнения.

С помощью среды SciLab были проверены вычисления, проводимые в прикладной программе. Эта проверка показала достаточно высокую точность вычислений прикладной программы. Значения, полученные в среде SciLab, отличаются от вычислений прикладной программы примерно на одну тысячную. Это позволяет судить о достаточно высокой точности вычислений прикладной программы и соответственно о точности вычислений интеграла методом трапеций, который использовался в прикладной программе.

8. Список используемой литературы

8.1. Сергиевский М.В., Шалашов А.В., Турбо паскаль 7.0., Язык, среда, программирования. – М.:Машиностроение. – 1994. – 254с.

8.2 Мудров А.Е., Численные методы для ПЭВМ на языках Бэйсик, Фортран и Паскаль. – Томск : МП «РАСКО», 1991. – 272с.

8.3