Использование языков программирования высокого уровня для решения задач вычислительной математики

В этой работе мы будем использовать все три составляющие – как разобьем программу на множество подпрограмм, так и будем

Использование языков программирования высокого уровня для решения задач вычислительной математики

Курсовой проект

Компьютеры, программирование

Другие курсовые по предмету

Компьютеры, программирование

Сдать работу со 100% гаранией
/p>

begin

menu_1;

end;

end;

output_I(f, c, n);

writeln('Push any button to proceede to main menu...');

readln;

menu_1;

end;

end.

Модульmath:

unit math;

Interface

function Simpson(var n: integer): real;

function Trap(var n: integer): real;

function Newton(var n: integer): real;

function y(x: real): real;

Implementation

uses crt, input;

var a, b : integer;

function Simpson(var n: integer): real;

var h, sum : real;

i, p: integer;

begin

n := get_n;

a := -1; b := 1;

h := (b - a) / n;

sum := 0;

for i := 1 to n - 1 do

begin

if i mod 2 = 0 then

p := 2

else

p := 4;

sum := sum + p * y(a + h * i);

end;

sum := sum + y(a) + y(b);

sum := sum * (h / 3);

Simpson := sum;

end;

function Trap(var n: integer): real;

var h, sum : real;

i : integer;

begin

n := get_n;

a := -1; b := 1;

h := (b - a) / n;

sum := 0;

for i := 0 to n - 1 do

sum := sum + y(a + i * h) + y(a + (i + 1) * h);

sum := sum * (h / 2);

Trap := sum;

end;

function Newton(var n: integer): real;

var h, sum1, sum2, sum: real;

i : integer;

begin

n := get_n;

a := -1; b := 1;

h := (a - b) / n;

sum1 := 0; sum2 := 0;

for i := 0 to n - 1 do

if i mod 3 = 0 then

sum1 := sum1 + y(a + i * h)

else

sum2 := sum2 + y(a + i * h);

sum := 3 / 8 * h * (y(a) + y(b) + 2 * sum1 + 3 * sum2);

Newton := sum;

end;

function y(x : real): real;

begin

y := exp(x);

end;

end.

Модульinput:

unit input;

Interface

function get_n : integer;

function file_n : integer;

function console_n : integer;

Implementation

uses crt;

function get_n : integer;

var c : integer;

begin

clrscr;

writeln('Input N:');

writeln('1. From file');

writeln('2. From console');

write('>> ');

readln(c);

if c = 1 then

get_n := file_n

else

get_n := console_n;

end;

function file_n : integer;

var t : text;

n : integer;

begin

clrscr;

assign(t, 'input_n.txt');

reset(t);

read(t, n);

close(t);

clrscr;

file_n := n;

end;

function console_n : integer;

var n : integer;

begin

clrscr;

write('Input N: ');

readln(n);

delay(300);

clrscr;

console_n := n;

end;

end.

Модульoutput:

unit output;

Interface

procedure output_I(f : real; i, n : integer);

procedure file_I(f : real; i, n : integer);

procedure console_I(f : real; i, n : integer);

Implementation

uses crt;

procedure output_I(f : real; i, n : integer);

var c : integer;

begin

writeln('Output I:');

writeln('1. File');

writeln('2. Console');

writeln('3. File&Console');

write('>> ');

readln(c);

if c = 1 then

file_I(f, i, n)

else

if c = 2 then

console_I(f, i, n)

else

begin

file_I(f, i, n);

console_I(f, i, n);

end;

end;

procedure file_I(f : real; i, n : integer);

var t : text;

r : real;

begin

assign(t, 'output_f.txt');

rewrite(t);

if i = 1 then

writeln(t, 'Solved by Simpson method: n = ', n)

else

if i = 2 then

writeln(t, 'Solved by trapeze method: n = ', n)

else

writeln(t, 'Solved by Newton method n = ', n);

writeln(t, ' 1');

writeln(t, ' I = S(e^x)dx = ', f);

writeln(t, ' -1');

r := exp(1) - exp(-1);

writeln(t, 'Exact value: ', r);

r := f - r;

writeln(t, 'Difference: ', r);

close(t);

end;

procedure console_I(f : real; i, n : integer);

var r : real;

begin

clrscr;

if i = 1 then

writeln('Solved by Simpson method: n = ', n)

else

if i = 2 then

writeln('Solved by trapeze method: n = ', n)

else

writeln('Solved by Newton method n = ', n);

writeln(' 1');

writeln(' I = S(e^x)dx = ', f);

writeln(' -1');

r := exp(1) - exp(-1);

writeln('Exact value: ', r);

writeln('Difference: ', f - r);

end;

end.

Тестирование

Решим методом трапеций:

Решим методом Ньютона:

Решим методом Симпсона:

Судя по результатам, можно сделать вывод о том, что программа работает правильно.

4. Построение графического решения задачи в пакете Matlab

График MATLAB

MATLAB:

X= linspace(-2, 2);

Y = exp(X);

X1 = linspace(-1, 1);

Y1 = exp(X1);

%plot(X1, Y1);

plot(X, Y);

hold on;

area(X1, Y1, ‘FaceColor’, ‘y’);

grid on;

axis on;

title(‘ y = e^x’);

xlabel(‘X’);

ylabel(‘Y’);

text(0, 0.5, ‘S’);

Заключение

Краткие сведения о проделанной работе:

Была осуществлена задача вычислительной математики на двух языках: #Си и Pascal.

Данная задача может послужить ярким примером использования структурного программирования, так как включает в себя его основы:

использования следующих структур: следования, ветвлений и циклов; использование модульного программирования и использование нисходящего программирования.

Плюсы и минусы итоговой программы:

Плюсы:

1). Программа включает в себя такие структуры как: условные операторы, операторы множественного выбора, функции, процедуры, модули, файлы.

2). Занимает небольшой объем оперативной памяти.

3). Совмещена практически с любой операционной системой.

4). Может запускаться как с использованием среды, так и с помощью файла exe.

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

Минусы:

1). Данная программа не имеет проверки ввода количества разбиений отрезка, как с клавиатуры, так и из файла.

2). Пользователь не имеет возможности выйти из программы до ее завершения.

В дальнейшем минусы могут быть исправлены, улучшив программу и сделав ее более функциональной и адаптированной.

Выводы о проделанной работе можно разделить на две группы – выводы о различии Си и Паскаля, и выводы об эффективности структурного программирования.

Различия Си и Паскаля. Эти языки крайне похожи, но имеют серьезные различия в синтаксисе. Так, например, в обоих языках есть подпрограммы ввода и вывода, но в Си это printf и scanf, а в Паскале write и read. Так со многими командами, но они имеют одинаковый смысл, что делает несложным перевод кода с одного языка на другой

Эффективность структурного программирования. Структурное программирование заметно упрощает процесс написания программы. Благодаря использованию подпрограмм упрощается исправление ошибок, допущенных в ходе написания программы. А нисходящее программирование снижает количество ошибок

Дальнейшее применение этой программы вполне возможно. Модули вычисления интегралов можно использовать в других, более сложных программах, что является серьезным преимуществом структурного программирования

    Список литературы

    Рапаков Г., Ржеуцкая С. TurboPascal для студентов и школьников/ БХВ-Петербург 2002

    Березин, Б.И. Начальный курс С и С++ / Б.И. Березин, С.Б. Березин – М.: Диалог-МИФИ, 2005. – 248 с.

Похожие работы

< 1 2