Численные методы в визуальном программировании
ФЕДЕРАЛЬНОЕ
АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ
КАЗАНСКИЙ
ГОСУДАРСТВЕННЫЙ АРХИТЕКТУРНО-СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ
Кафедра
прикладной математики
МЕТОДИЧЕСКИЕ
УКАЗАНИЯ
по курсу
"Информатика"
для
самостоятельной работы студентов
всех
специальностей
ЧИСЛЕННЫЕ МЕТОДЫ
в визуальном
программировании
ЧАСТЬ 3
Казань
Составитель: И.Н.Гатауллин
УДК 621.313
Методические указания по курсу
"Информатика" для самостоятельной работы студентов всех
специальностей. Численные методы в визуальном программировании. Часть 3.
/Казанский государственный архитектурно-строительный университет. Сост.:
И.Н.Гатауллин. Казань, 2008. -35 с.
Методические указания состоят из трёх частей и
предназначены для самостоятельной работы студентов всех специальностей и
используются при выполнении лабораторных и контрольных работ по курсу
"Информатика" на языке Visual Basic. В данной работе приводятся
численные методы решения нелинейных уравнений, систем линейных и нелинейных
алгебраических уравнений, дифференциальных уравнений, определенных интегралов,
методы аппроксимации дискретных функций и методы решения задач линейного
программирования.
Табл. нет, библиогр. назв. 8
Рецензент - Р.Б.Салимов, доктор физ.-мат. наук,
профессор
© Казанский государственный
архитектурно - строительный
университет, 2008 г.
1. Численное решение
нелинейных уравнений
.1 Метод деления
отрезка пополам
Пример 1-1: Найти решение уравнения x3+x-1=0 c
точностью e=0.001 методом деления отрезка пополам.
Решение: Работа выполняется в следующей
последовательности:
. Запустить VISUAL
BASIC. В окне New
Project выбрать
Стандартный.EXE вкладки New
(новый) и кликнуть по кнопке «Открыть».
. На экране появится новый проект и форма Project1
- Form1 (Form),
содержание которой нужно заполнить необходимыми компонентами, с помощью которых
можно будет выполнить необходимые вычисления.
. Во-первых, необходимы элементы, которые будут
использоваться для ввода данных A,
B и E.
Используем для этой цели элементы Text1,
Text2 и Text3.
Во-вторых, необходимы элементы, в которых будут отражены результаты вычисления xn
и yn. Используем для
этой цели элементы Text4
и Text5.
. Для оформления надписей для обозначения
текстовых окон Text1,
Text2, Text3,
Text4 и Text5
можно использовать метки Label1,
Label2, Label3,
Label4 и Label5
соответственно.
. Чтобы процедура пользователя была доступна на
всех формах приложения, ее текст можно записать в специальном окне Module
- модуль приложения. Программный код такой программы будет храниться в файлах
приложения с расширением *.bas.
Function fnf(x As Single) As Single
= x ^ 3 + x
-1
End
Function
. Для выполнения функций вычисления необходима
одна кнопка Command1.
Это будет «Старт». Вторая кнопка Command2
выполняет функцию завершения работы приложения - кнопка «Финиш».
. Теперь следует все указанные выше компоненты вынести
на форму. Для этого на панели стандартных элементов находим значок одного из
компонент, активизируем его и «переносим» на форму: рисуем условный
прямоугольник в том месте формы, где будет предположительно находиться этот
элемент, учитывая при этом его размеры.
. Аналогичные действия выполняем поочередно для
каждого элемента, пока на форме не появятся все 12 элементов.
. Далее изменяем свойства объектов, используя
страницу свойств Properties.
Для изменения свойств элементов следует активизировать элемент - выделить его
на форме. Далее для выделенного элемента в окне свойств можно вносить
изменения: для Command1
изменить свойство Caption
= ‘Старт‘, для Command2
- свойство Caption
= ‘Финиш‘. Для остальных элементов задать значения свойств:
Text1.Text
= ‘ ‘
Text2.Text
= ‘ ‘
Text3.Text = ‘ ‘.Text = ‘ ‘.Text = ‘
‘1.Caption
= ‘Введите значение A‘
Label2.Caption
= ‘Введите значение B‘
Label3.Caption
= ‘Введите значение E‘
Label4.Caption
= ‘Вывод значения xn‘
Label5.Caption
= ‘Вывод значения yn‘
Заготовку формы для примера 1-1 с измененными
свойствами смотрите на рис. 2.3.
. Для создания программного кода в проводнике
проекта или в меню View
выбрать команду Code.
В окне Project1
- Form1 (Code)
выбрать в списке General
название кнопки 1 и кликнуть по ней. В результате появится заготовка записи
программного кода для Command1
с инициированием для нее события Click.
Значения A, B,
E пользователь
должен ввести в окна Text1,
Text2, Text3.
Но в текстовом окне данные получаются также текстовые, типа Single.
Поэтому используем функцию Val(
) для перевода в числовой тип Single,
который объявлен для переменных A,
B, E
в начале программы в операторе Dim.
Для вывода значений xn,
yn используется
функция Round( ), которая
округляет количество знаков после запятой до четырёх.
. Аналогичные действия выполняем в отношении
кнопки 2. Для Command2
будет выполняться одно действие - закрыть приложение. Это выполняет команда End.
Рис. 2.3. Заготовка формы для примера 1-1 с
измененными свойствами.
Программный код для примера нахождения корней
уравнения методом деления отрезка пополам будет иметь вид:
Private
Sub Command1_Click()
Rem
Лабораторная работа 1-1, вариант 13
A=0, B=1, E=0.001A, B, E, YA, YB,
xn, yn As Single
A = Val(Text1.Text)= Val(Text2.Text)=
Val(Text3.Text)= fnf(A / 1): YB = fnf(B / 1)YA * YB > 0 Then GoTo
1"xn", "yn"
xn = (A + B) / 2: yn = fnf(xn /
1)xn, ynYA * yn < 0 Then B = xn Else A = xn(B - A) > E Then GoTo 2.Text =
Round(xn, 4).Text = Round(vn, 4)SubSub Command2_Click()
End
Sub
. Для сохранения проекта надо выполнить команду
меню File (файл) →
Save Project
As (Сохранить проект
как). В диалоговом окне Save
File As
(Сохранить файл как) выбрать название диска, на котором должна быть создана
папка для хранения файлов нового проекта. Далее для сохранения формы, следует
набрать имя файла в поле ввода File
Name (Имя файла),
например Primer1-1, и
нажать клавишу «Enter».
Форма Form1 будет
сохранена в файле с расширением Primer1-1.frm.
. После сохранения формы следует сохранить
проект. В VISUAL
BASIC это происходит
автоматически, после чего должно появиться диалоговое окно Save
Project As
-Сохранить проект. Следует набрать то же имя Primer1-2
и нажать клавишу «Enter».
Файл проекта будет сохранен с расширением Primer1-1.vbp.
. Теперь запустить проект на выполнение.
Выбираем команду Run
→
Start или Shift+F5.
В поле Text1 нужно
ввести значение A, в поле Text2
- значение B, в поле Text3
- значение E - после чего
нажать кнопку «Старт». В окнах Text4,
Text5 появились
значения xn, yn.
Для завершения работы приложения следует нажать кнопку «Финиш».
1.2 Метод Ньютона
(метод касательных)
численный метод линейный
программирование
Пример: Решить уравнение F(x)=x3+x-1=0 на
отрезке [0;1] методом Ньютона c точностью e=0.01.
Решение:
На рис. 1.5 приведена программа решения данного
уравнения методом Ньютона.
CLSLR-1-2, m=13,
n=5FNF(X)=X^3+X-1FNP(X)=3*X+1X, E
X=X- FNF(X)/FNP(X)X,
FNF(X)ABS(FNF(X)/FNP(X))>E THEN 1
END
Рис. 1.5. Программа нахождения корней методом
Ньютона.
1.3 Метод простой
итерации
Пример: Решить уравнение F(x)=x3+x-1=0 на
отрезке [0;1] методом простой итерации c точностью e=0.01.
Решение:
X = X - FNF(X)/MX,
FNF(X)ABS(FNF(X)/M)>E THEN 1
END
Рис.1.7. Программа решения уравнения методом
простой итерации.
2. Методы решения
систем линейных алгебраических уравнений
.1 Метод Гаусса
Пример: Решить систему уравнений методом Гаусса:
+ 4x2 + 3x3 = 10
x1 + x2 - x3 = -1
x1 - x2 +x3 = 11
Решение:
2.2 Метод прогонки
Пример: Решить систему уравнений методом прогонки:
10x1 + x2 = m+5
x1 + 9x2 + x3 = n+9 m -1
,1x2 +4x3 -x4 = 4 n+0,1 m -5
-x3
+8x4 - x5
= 40 -n - L
x5 = L,
где значения m - номер варианта, n - номер
группы, L - номер
факультета.
Решение:
На рис. 2.1 приведена программа решения методом
прогонки.
REM LR-2-2, m=13, n=5A(5), B(5),
C(5), D(5), U(5), V(5), X(6), R(5)0, 10, 1, 5-2, 9, 1, -10.1, 4, -1, -5-1, 8,
-1, 400, 1, 0, 0I =1 TO 5A(I), B(I), C(I), D(I)(I) = -C(I) / (A(I)*U(I-1) +
B(I))(I) =(D(I)-A(I)*V(I-1)) / (A(I)*U(I-1) + B(I))I(5) = V(5)I =4 TO 1 STEP
-1(I) = U(I)*X(I+1) + V(I)II =1 TO 5(I) = D(I)-A(I)*X(I-1)-B(I)
*X(I)-C(I)*X(I+1)²X ²;
I; ²
= ²;
X(I); ²R²;
I; R(I)
NEXT I
Рис.2.1. Программа решения методом прогонки.
2.3 Метод простой
итерации (метод Якоби)
Пример: Преобразовать систему уравнений:
x1 + 4x2 -x3= 7
x1+6x2+3x3=-2 (2.15)
x1+ x2 + 4x3=4
к виду, пригодному для построения итерационного
процесса методом Якоби и выполнить три итерации.
Решение:
2.4 Метод Зейделя
Решение:
3. Численные методы
решения систем нелинейных уравнений
.1 Метод простой
итерации (метод Якоби)
Пример: Найти решение системы (3.7) методом
Зейделя с точностью e=0,001.
(x,y)=2sin(x+1)-y-0.5 = 0
(3.7)(x,y)=10cos(y-1)-x+0.4 = 0
Решение:
Программа, реализующая решение данной задачи,
представлена на рис.3.2.
CLSLR-3-2, m=13, n=5X,Y, M1,M2
X=X-(2*SIN(X+1)-Y -
0.5)/M1=Y-(10*COS(Y-1)-X+0.4)/M2X,YTT1
Рис.3.2. Программа
решения методом Зейделя.
3.2 Метод Ньютона
Пример: Найти решение системы (3.7)
F(x,y)=2·sin(x+1)-y-0.5
= 0
G(x,y)=10·cos(y-1)-x+0.4
= 0 (3.13)
методом Ньютона с точностью e=0,001.
Решение:
Программа реализующая метод Ньютона для
указанной задачи представлена на рис. 3.3.
REM LR-3-3, m=13, n=5X, Y
F = 2*SIN(X+1)-Y - 0.5=
10*COS(Y-1)-X+0.4=2*COS(X+1)=-1=-1=-10*SIN(Y-1)= Fx*Gy- Gx*Fy=(G*Fy-F*Gy)/D=(F*Gx-G*Fx)/D=X+DX=Y+DYX;Y;
F;G;DX;DY;TT1
Рис.3.3. Программа,
реализующая метод Ньютона
3.3 Приближение функции
по методу наименьших квадратов (МНК)
Пример: Подобрать аппроксимирующий полином
первой степени y}=ax+b для данных
0 1 2 30.1 0.9 2.1 3
Решение:
Пример: Используя МНК построить эмпирическую
зависимость y=ax2+bx+c, аппроксимирующую следующие табличные значения:
-2 -1 0 1 26 2 -1 -2 -1
Решение:
.4 Интерполяционный
полином в форме Лагранжа
Пример. Пусть задана таблица 4.4
Таблица 4.4
xi -1 0
1/2 1
yi 0 2 9/8 0
Решение.
4. Численное
интегрирование
.1 Метод
прямоугольников
Программа вычисления интеграла методом
прямоугольников представлена на рис. 5.2.
REM LR-5-1, m=13,
n=5FNF(X)=2*X^2+.10,1,8A,B,N=(B-A)/N=0: X=A
S=S +FNF(X)*H=X+HX<B
THEN 1²S=²;
S
4.2 Метод трапеций
Программа вычисления интеграла методом трапеций
представлена на рис. 5.4.
REM LR-5-2, m=13,
n=5FNF(X)=2*X^2+0.10,1,8A,B,N=(B-A)/N=(FNF(A)+FNF(B))/2= A+H
S=S+FNF(X)=X+HX<B THEN 1=S*H²S=²;
S
Рис. 5.4. Программа вычисления интеграла методом
трапеций.
Метод парабол (Симпсона)
Пример: Требуется вычислить определенный
интеграл методами прямоугольников, трапеций и парабол:
I = (2x2+0,1) dx
Решение:
Программа вычисления интеграла
методом парабол (Симпсона) представлена на рис. 5.6.
CLSLR-5-3,
m=13, n=5FNF(X)=2*X^2+0.10,1,4A,B,N=(B-A)/N/2=0=A
S=S+H*(FNF(X)+4*FNF(X+H)+FNF(X+2*H))/3=X+2*HX<B-H
THEN 1²S=²;
S
Рис. 5.6. Программа
вычисления интеграла методом парабол (Симпсона).
5. Решение
задачи Коши для обыкновенных дифференциальных уравнений
.1 Метод
Эйлера
Пример: Решить задачу Коши методом
Эйлера для дифференциального уравнения
y¢=x2+y, y(0)= 1 на
отрезке [0;0,3] с шагом 0,1.
Решение:
Программа решения задачи Коши
методом Эйлера дана на рис. 6.2.
CLSLR-6-1,
m=13, n=5FNY(X,Y)=X^2+Y0, 0.3, 1, 0.1A, B, Y0, HA;Y0=A: Y=Y0
Y=Y+
FNY(X,Y)*H=X+HX;YX<B THEN 1
Рис. 6.2. Программа решения задачи
Коши методом Эйлера.
5.2
Модифицированный метод Эйлера
Пример: Решить задачу Коши
модифицированным методом Эйлера для дифференциального уравнения
y¢=x2+y, y(0)= 1 на
отрезке [0;0,3] с шагом 0.1.
Решение:
Программа решения задачи Коши
модифицированным методом Эйлера дана на рис. 6.4.
CLSLR-6-2,
m=13, n=5FNY(X,Y)=X^2+Y0, 0.3, 1, 0.1A, B, Y0, HA;Y0=A: Y=Y0
Y1=Y+
FNY(X,Y)*H=Y+H*(FNY(X,Y)+FNY(X+H,Y1))/2=X+HX;YX<B THEN 1
Рис. 6.4. Программа решения задачи
Коши модифицированным методом Эйлера.
5.3 Метод Рунге-Кутта
Пример: Решить задачу Коши методом
Рунге-Кутта для дифференциального уравнения
y¢=x2+y, y(0)= 1 на
отрезке [0,0.3] с шагом 0.1.
Решение:
Программа решения задачи Коши
методом Рунге-Кутта дана на рис. 6.5.
CLSLR-6-3,
m=13, n=5FNY(X,Y)=X^2+Y0, 0.3, 1, 0.1A, B, Y0, HA;Y0=A: Y=Y0
K0 =
H*FNY(X,Y)= H*FNY(X+H/2,Y+K0/2)= H*FNY(X+H/2,Y+K1/2)=
H*FNY(X+H,Y+K2)=Y+(K0+2*K1+2*K2+K3)/6=X+HX;YX<B THEN 1
Рис. 6.5. Программа решения задачи
Коши методом Рунге-Кутта.
6. Задачи
линейного программирования
Пример. Имеется 300 кг металла, 100
м2 стекла и 160 - человеко-часов рабочего времени; из них изготавливают изделия
двух наименований А и Б; стоимость одного изделия А равна 10 $, для его
изготовления нужно 4 кг металла, 2 м2 стекла и 2 человеко-часа рабочего времени;
стоимость одного изделия Б равна 12 $, для его изготовления нужно 5 кг металла,
1 м2 стекла и 3 человеко-часа рабочего времени; требуется спланировать
производство так, чтоб произвести изделия с максимальной стоимостью.
Решение.
6.1
Симплекс метод решения задач линейного программирования
Пример. Имеется 300 кг металла, 100
м2 стекла и 160 - человеко-часов рабочего времени; из них изготавливают изделия
двух наименований А и Б; стоимость одного изделия А равна 10 $, для его
изготовления нужно 4 кг металла, 2 м2 стекла и 2 человеко-часа рабочего
времени; стоимость одного изделия Б равна 12 $, для его изготовления нужно 5 кг
металла, 1 м2 стекла и 3 человеко-часа рабочего времени; требуется спланировать
производство так, чтоб произвести изделия с максимальной стоимостью.
Решение.
6.2
Симплекс-таблица
Пример. С помощью Симплекс-таблицы
найти минимальное значение
целевой функции (7.15):
F(x1,x2)=
-f(x1,x2)= -10·x1- 12·x2- 0·x3 - 0·x4 - 0·x5 ® min
при данных ограничениях (7.14)
·x1 + 5·x2 + x3 = 300
·x1+ x2 + x4= 100
·x1+ 3·x2+ x5= 160
x1,2,3,4,5³ 0
ЗАКЛЮЧЕНИЕ
Данные методические указания
предназначены для самостоятельной работы студентов, имеющих начальные знания по
программированию на языке Visual Basic. Для получения начальных знаний ниже
прилагается дополнительная литература.
В этой работе были рассмотрены
численные методы решения различных задач:
) методы решения нелинейных
уравнений;
) методы решения систем линейных
уравнений;
) методы решения систем нелинейных
алгебраических уравнений;
) методы решения дифференциальных
уравнений;
) методы решения определенных
интегралов;
) методы аппроксимации дискретных
функций;
) методы решения задач линейного
программирования.
Дополнительная
литература
.
Калиткин Н.П. Численные методы. М.: Наука, 1978. - 512 с.
.
Солодовников А.С. Введение в линейную алгебру и линейное программирование. М.:
Просвещение, 1966. - 183 с.
.
Монахов В.М. и др. Методы оптимизации. Применение математических методов в
экономике. М., Просвещение, 1978. - 175 с.
.
С.В.Симонович и др. Информатика. Базовый курс. Санкт-Петербург: Издательский
дом Питер. 2002, - 640 с.
.
А.В.Могилев, Н.И.Пак, Е.К.Хеннер. Информатика. - 3-е изд., перераб. и доп. -
М.: Издательский центр «Академия», 2004, - 848 с.
.
М.Д.Князева. Программирование на Visual
Basic 6. Учеб. Пособие.
-М.: КУДИЦ-ОБРАЗ, 2006. - 176с.
.
Методические указания к лабораторным работам по дисциплине:
"Алгоритмизация и программирование". Основы визуального
программирования. /Сост.: И.Н.Гатауллин, Ф.Г.Габбасов. - Казань, КГАСУ, 2008.
61 с.