Основные этапы разработки программы вычисления определенного интеграла функции по методу Симпсона
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
богатую историю развития.
Новую жизнь языку дала фирма Борланд, разработавшая на его базе семейство Паскаль - систем, называемых Турбо Паскалем. Интегрированная среда, обеспечивающая многооконную разработку программной системы, обширный набор встроенных в неё средств компиляции и отладки, доступных для работы через легко осваиваемое меню, - всё это обеспечивает высокую производительность труда программиста, недостижимую при работе со старыми средами.
Выбор языка Pascal не случаен - это учебный язык, с легко просматриваемой алгоритмикой программы; язык типизирован, что позволяет на его основе изучать более сложные языки; язык позволяет научиться хорошему стилю программирования.
4. Текст программы решения задачи
Program tr_s;
uses crt, graph;m, m1;:char;, b:real; {Границы отрезка}
r, r2:real; {Предыдущее и текущее приближенные значения интеграла}:integer; {Счетчики}, f2:real; {Числитель и Знаменатель}
s1, s2, s3:real; {Степени}
k, o:real; {Некоторые коэффициенты}
{Интегрируемая функция}f (x:real):real;:=k*exp (s1*ln(x)); {k*(x в степени s1)}:=exp (s2*ln (ln(x)/ln(o))); {log o x - это ln(x)/ln(o)}:=f1/f2;;
{Метод трапеций}trap (a, b:real; n:integer):real;
var:real; {Полученная сумма}:real; {Шаг}:integer; {Счетчик}:=(b-a)/(n-1); {Определяется шаг}:=(f(a)+f(b))/2; {Начальное значение суммы}m:=1 to n-2 do s:=s+f (a+m*h); {Суммирование остальных элементов}:=s*h; {Возвращается значение интеграла}
end;
{Метод Симпсона}simp (a, b:real; n:integer):real;:real; {Сумма}:real; {Шаг}:integer; {Счетчик}:integer; {Очередной множитель}
begin:=(b-a)/(n-1); {Рассчитывается шаг}:=f(a)+f(b); {Начальное значение шага}:=4; {Первый множитель - 4}
{Суммирование остальных элементов}
for m:=1 to n-2 do begin:=s+mn*f (a+h*m);(mn=4) then mn:=2 else mn:=4; {Изменение множителя 2<>4}
end;:=s*h/3; {Возвращается вычисленное значение};
{Процедура вычисления порядка числа}
procedure norm (a:real);n:real;
begin
{Если число слишком мало - возвращается ноль}
if (a<0.00001) then n:=0begin
{Если число меньше единицы}(a<1) then begin
n:=1;:=a*10;:=n/10;(trunc(a)<>0);else begin
{Если число больше единицы}:=1;
repeat:=a/10;:=n*10;(trunc(a)=0);;;
a:=n;;
{Построение графика функции}
procedure out_grp (xmin, xmax, ymin, ymax:real);, mode:integer;, my:real; {Масштабы по осям}, yy:real; {Текущие координаты}
sx:real; {Шаг по оси X}, dlty:integer; {Приращение на графике при смещении графика}:string; {Строка}
{Инициализация графики}
drv:=VGA;:=VGAHi;(drv, mode, );
{Выяснение порядков минимумов и максимумов}
norm(xmax);(ymax);(ymin); ymin:=ymin/10;(xmin); ymin:=ymin/10;(xmin/xmax)>0.01 then dltx:=20 else dltx:=0;(ymin/ymax)>0.01 then dlty:=20 else dlty:=0;
{Расчет масштабов}:=500/(xmax-xmin);:=400/(ymax-ymin);
{Расчет приращения по X}:=(xmax-xmin)/550;
{Вывод системы координат}
settextjustify (1,1);:=xmin;(1);(trunc(40+mx*(xx-xmin)+dltx), 20, trunc (40+mx*(xx-xmin)+dltx), 469);(xx:4:2, s);(15);(trunc(40+mx*(xx-xmin)+dltx), 475, s);:=xx+50*sx;(xx>(xmax+50*sx));:=ymin+(ymax-ymin)/10;(1);(41, trunc (470-my*(yy-ymin) - dlty), 630, trunc (470-my*(yy-ymin) - dlty));(yy:4:2, s);(15);(20, trunc (470-my*(yy-ymin) - dlty), s);:=yy+(ymax-ymin)/10;(yy>(ymax+(ymax-ymin)/10));(40,0,40,480);(0,470,640,470);(40,0,38,10);(40,0,42,10);(640,470,630,472);(640,470,630,468);
{Вывод графика}:=xmin;:=f(xx);(trunc(40+mx*(xx-xmin)+dltx), trunc (470-my*(yy-ymin) - dlty), 7);:=xx+sx;(xx>xmax);(300,10, Press ESC to continue );until (readkey=#27);;;
{Основная программа}
{Ввод границ отрезкa};(ВЫВЕСТИ ИНФОРМАЦИЮ О ПРОГРАММЕ? (y/n));(I); I=y then
begin(Программа вычисляет приближенное значение интеграла иррациональной );(логарифмической функции f(x)=x/log(x), которая может быть изменена, );(путём ввода таких параметров, как коэффициент при х в числителе; );(степень, в которую возводится х в числителе; также основание );(логарифма и его степень, по методу Симпсона);(Затем вводятся границы отрезков: А>B, );(т.к. f(x) непрерывна при всех значениях x, удовлетворяющих условиям A<=x<=B);(Также, исходя из определения логарифма, А и В должны быть положительными, );(а основание логарифма - больше нуля и не равно 1);(________________________________________________________________________________);;: write (Введите коэффициент при х в числителе………………);
{$I-}(k);ioresult<>0 do
begin(НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ ЧИСЛЕННЫЕ ЗНАЧЕНИЯ!!!);(Введите коэффициент при х в числителе………………);(k);;
{$I+}(Введите степень, в которую необходимо возвести x…….);
{$I-}(s1);ioresult<>0 do
begin(НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ ЧИСЛЕННЫЕ ЗНАЧЕНИЯ!!!);(Введите степень, в которую необходимо возвести x…….);(s1);
{$I+};(Введите основание логарифма……………………….);
{$I-}(o);(o<=0) or (o=1) do
begin(НЕВЕРНЫЙ ВВОД!!! ОСНОВАНИЕ ЛОГАРИФМА БОЛЬШЕ НУЛЯ И НЕ РАВНО 1);(Введите основание логарифма……………………….);
readln(o);(ioresult<>0) do
begin
writeln (НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ ЧИСЛЕННЫЕ ЗНАЧЕНИЯ!!!);(Введите основание логарифма……………………….);
readln(o);;
{$I+};
write (Введите степень, в которую необходимо возвести логарифм.);
{$I-}(s2);ioresult<>0 do
begin(НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ ЧИСЛЕННЫЕ ЗНАЧЕНИЯ!!!);(Введите степень, в которую необходимо возвести логарифм );
readln(s1);;
{$I+}: write ( Введите границы отрезков: );
{$I-}(a, b);ioresult<>0 do
begin(НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ ЧИСЛЕННЫЕ ЗНАЧЕНИЯ!!!);( Введите границы отрезка: );
readln (a, b);;
{$I+}a=b then
writeln (НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ РАЗЛИЧНЫЕ ЗНАЧЕНИЯ!!!);
goto m;
end;a<=0 then
begin(НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ A>0!!!);
goto m;;b<=0 then
begin(НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ B>0!!!);
goto m;
end;a>b then
begin
writeln (НЕВЕРНЫЙ ВВОД!!! ВВОДИТЕ A<B!!!);
goto m;;(ln(a)=0) or (ln(b)=0) then
begin(ДЕЛЕНИЕ НА НОЛЬ!!! НЕТ РЕШЕНИЙ!!!);(ЗАПУСТИТЬ ПРОГРАММУ СНАЧАЛА? (y/n));
readln(I);;I=y then goto m1;;
{Выводится график функции}
out_grp (a, b, f(b), f(a));
{Вычисляется интеграл по методу трапеций}:=3;:=trap (a, b, n); {Начальное значение}:=r; {Запоминается предыдущее значение}:=n+2; {Увеличивается количество шагов}:=trap (a, b, n); {Рассчитывается новое значение}