Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метода_(4).doc
Скачиваний:
10
Добавлен:
17.08.2019
Размер:
217.6 Кб
Скачать

Задача 4. Программирование алгоритмов с итерационными циклами, содержащими вложенные арифметические циклы

Вычислить интеграл методом прямоугольников с точностью eps=0.00001.

Описание метода

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

Блок-схема

Программирование на языке Visual Basic

Создаем форму следующего вида, с данными элементами управления

Свойство “Caption” объекта “Label1” изменяем на “a=”.

Свойство “Caption” объекта “Label2” изменяем на “b=”.

Свойство “Caption” объекта “Label3” изменяем на “eps=”.

Свойство “Caption” объекта “Label4” изменяем на “Интеграл =”.

Свойство “Caption” объекта “Label5” изменяем на “”.

Свойство “Caption” объекта “Label6” изменяем на “”.

Свойство “Caption” объекта “Label7” изменяем на “”.

Свойство “Caption” объекта “CommandButton1” изменяем на “Вычислить”.

Тогда форма примет вид:

На нажатие объекта “CommandButton1” определим следующую процедуру:

Private Sub CommandButton1_Click()

a = Val(TextBox1.Text)

b = Val(TextBox2.Text)

eps = Val(TextBox3.Text)

n = 10

S2 = 0

Do

S1 = S2

S2 = 0

For x = a To b Step (b - a) / n

S2 = S2 + (b - a) / n * (x * x)

Next x

Label6.Caption = Label6.Caption & n & Chr(13)

Label7.Caption = Label7.Caption & S2 & Chr(13)

n = 2 * n

Loop While Abs(S2 - S1) > eps

Label5.Caption = S2

End Sub

Запуск программы: “Run” – “Run”

Программирование на языке Borland C++

#include <iostream.h>

#include <math.h>

int main() {

float a, b, c;

float eps;

cout << "Введите числа a, b и eps: ";

cin >>a>>b>>eps;

int n=10;

float S2=0;

float S1;

do {

S1=S2;

S2=0;

For (i = 1; i <= n; i++)

S2=S2+(b-a)/n*(a+i*(b-a)/n) *(a+i*(b-a)/n);

cout <<n<<S2;

cout << endl;

n:=2*n;

} while (fabs(S2-S1) < eps);

cout << S2;

cout << endl;

return 0;

}

Запуск программы: “Run” – “Run”

Программирование на языке Borland Delphi (консольный режим)

Program z4;

Var a,b,eps,x,f:real;

Begin

Write(‘Введите числа a, b и eps : ’);

Readln(a,b,eps);

n:=10;

S2:=0;

repeat

S1:=S2;

S2:=0;

For i:=1 to n do

S2:=S2+(b-a)/n*(a+i*(b-a)/n) *(a+i*(b-a)/n);

Writeln(’n= ’,n, ’ S2= ’,S2);

n:=2*n;

until abs(S1-S2)<=eps

writeln(‘ Интеграл = ‘,S2);

End.

Запуск программы: “Run” – “Run”