Численные методы в визуальном программировании
Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | методичка |
Язык | русский |
Дата добавления | 18.12.2014 |
Размер файла | 185,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ АРХИТЕКТУРНО-СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ
Кафедра прикладной математики
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
по курсу "Информатика"
для самостоятельной работы студентов
всех специальностей
ЧИСЛЕННЫЕ МЕТОДЫ
в визуальном программировании
ЧАСТЬ 3
Казань
2008
Составитель: И.Н.Гатауллин
УДК 621.313
Методические указания по курсу "Информатика" для самостоятельной работы студентов всех специальностей. Численные методы в визуальном программировании. Часть 3. /Казанский государственный архитектурно-строительный университет. Сост.: И.Н.Гатауллин. Казань, 2008. -35 с.
Методические указания состоят из трёх частей и предназначены для самостоятельной работы студентов всех специальностей и используются при выполнении лабораторных и контрольных работ по курсу "Информатика" на языке Visual Basic. В данной работе приводятся численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов, методы аппроксимации дискретных функций и методы решения задач линейного программирования.
Табл. нет, библиогр. назв. 8
Рецензент - Р.Б.Салимов, доктор физ.-мат. наук, профессор
© Казанский государственный
архитектурно - строительный
университет, 2008 г.
1. Численное решение нелинейных уравнений
1.1 Метод деления отрезка пополам
Пример 1-1: Найти решение уравнения x3+x-1=0 c точностью =0.001 методом деления отрезка пополам.
Решение: Работа выполняется в следующей последовательности:
1. Запустить VISUAL BASIC. В окне New Project выбрать Стандартный.EXE вкладки New (новый) и кликнуть по кнопке «Открыть».
2. На экране появится новый проект и форма Project1 - Form1 (Form), содержание которой нужно заполнить необходимыми компонентами, с помощью которых можно будет выполнить необходимые вычисления.
3. Во-первых, необходимы элементы, которые будут использоваться для ввода данных A, B и E. Используем для этой цели элементы Text1, Text2 и Text3. Во-вторых, необходимы элементы, в которых будут отражены результаты вычисления xn и yn. Используем для этой цели элементы Text4 и Text5.
4. Для оформления надписей для обозначения текстовых окон Text1, Text2, Text3, Text4 и Text5 можно использовать метки Label1, Label2, Label3, Label4 и Label5 соответственно.
5. Чтобы процедура пользователя была доступна на всех формах приложения, ее текст можно записать в специальном окне Module - модуль приложения. Программный код такой программы будет храниться в файлах приложения с расширением *.bas.
Function fnf(x As Single) As Single
fnf = x ^ 3 + x -1
End Function
6. Для выполнения функций вычисления необходима одна кнопка Command1. Это будет «Старт». Вторая кнопка Command2 выполняет функцию завершения работы приложения - кнопка «Финиш».
7. Теперь следует все указанные выше компоненты вынести на форму. Для этого на панели стандартных элементов находим значок одного из компонент, активизируем его и «переносим» на форму: рисуем условный прямоугольник в том месте формы, где будет предположительно находиться этот элемент, учитывая при этом его размеры.
8. Аналогичные действия выполняем поочередно для каждого элемента, пока на форме не появятся все 12 элементов.
9. Далее изменяем свойства объектов, используя страницу свойств Properties. Для изменения свойств элементов следует активизировать элемент - выделить его на форме. Далее для выделенного элемента в окне свойств можно вносить изменения: для Command1 изменить свойство Caption = `Старт`, для Command2 - свойство Caption = `Финиш`. Для остальных элементов задать значения свойств:
Text1.Text = ` `
Text2.Text = ` `
Text3.Text = ` `
Text4.Text = ` `
Text5.Text = ` `
Label1.Caption = `Введите значение A`
Label2.Caption = `Введите значение B`
Label3.Caption = `Введите значение E`
Label4.Caption = `Вывод значения xn`
Label5.Caption = `Вывод значения yn`
Заготовку формы для примера 1-1 с измененными свойствами смотрите на рис. 2.3.
10. Для создания программного кода в проводнике проекта или в меню 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( ), которая округляет количество знаков после запятой до четырёх.
11. Аналогичные действия выполняем в отношении кнопки 2. Для Command2 будет выполняться одно действие - закрыть приложение. Это выполняет команда End.
Рис. 2.3. Заготовка формы для примера 1-1 с измененными свойствами.
12 Программный код для примера нахождения корней уравнения методом деления отрезка пополам будет иметь вид:
Private Sub Command1_Click()
Rem Лабораторная работа 1-1, вариант 13
Rem A=0, B=1, E=0.001
Dim A, B, E, YA, YB, xn, yn As Single
1 A = Val(Text1.Text)
B = Val(Text2.Text)
E = Val(Text3.Text)
YA = fnf(A / 1): YB = fnf(B / 1)
If YA * YB > 0 Then GoTo 1
Print "xn", "yn"
2 xn = (A + B) / 2: yn = fnf(xn / 1)
Print xn, yn
If YA * yn < 0 Then B = xn Else A = xn
If (B - A) > E Then GoTo 2
Text4.Text = Round(xn, 4)
Text5.Text = Round(vn, 4)
End Sub
Private Sub Command2_Click()
End
End Sub
13. Для сохранения проекта надо выполнить команду меню File (файл) > Save Project As (Сохранить проект как). В диалоговом окне Save File As (Сохранить файл как) выбрать название диска, на котором должна быть создана папка для хранения файлов нового проекта. Далее для сохранения формы, следует набрать имя файла в поле ввода File Name (Имя файла), например Primer1-1, и нажать клавишу «Enter». Форма Form1 будет сохранена в файле с расширением Primer1-1.frm.
14. После сохранения формы следует сохранить проект. В VISUAL BASIC это происходит автоматически, после чего должно появиться диалоговое окно Save Project As -Сохранить проект. Следует набрать то же имя Primer1-2 и нажать клавишу «Enter». Файл проекта будет сохранен с расширением Primer1-1.vbp.
15. Теперь запустить проект на выполнение. Выбираем команду 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 точностью =0.01.
Решение:
На рис. 1.5 приведена программа решения данного уравнения методом Ньютона.
CLS
REM LR-1-2, m=13, n=5
DEF FNF(X)=X^3+X-1
DEF FNP(X)=3*X+1
INPUT X, E
1 X=X- FNF(X)/FNP(X)
PRINT X, FNF(X)
IF ABS(FNF(X)/FNP(X))>E THEN 1
END
Рис. 1.5. Программа нахождения корней методом Ньютона.
1.3 Метод простой итерации
Пример: Решить уравнение F(x)=x3+x-1=0 на отрезке [0;1] методом простой итерации c точностью =0.01.
Решение:
CLS
REM LR-1-3, m=13, n=5
DEF FNF(X)= X^3+X-1
INPUT X, E, M
1 X = X - FNF(X)/M
PRINT X, FNF(X)
IF ABS(FNF(X)/M)>E THEN 1
END
Рис.1.7. Программа решения уравнения методом простой итерации.
2. Методы решения систем линейных алгебраических уравнений
2.1 Метод Гаусса
Пример: Решить систему уравнений методом Гаусса:
x1 + 4x2 + 3x3 = 10
2x1 + x2 - x3 = -1
3x1 - x2 +x3 = 11
Решение:
2.2 Метод прогонки
Пример: Решить систему уравнений методом прогонки:
10x1 + x2 = m+5
-2x1 + 9x2 + x3 = n+9 m -1
0,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=5
DIM A(5), B(5), C(5), D(5), U(5), V(5), X(6), R(5)
DATA 0, 10, 1, 5
DATA -2, 9, 1, -1
DATA 0.1, 4, -1, -5
DATA -1, 8, -1, 40
DATA 0, 1, 0, 0
FOR I =1 TO 5
READ A(I), B(I), C(I), D(I)
U(I) = -C(I) / (A(I)*U(I-1) + B(I))
V(I) =(D(I)-A(I)*V(I-1)) / (A(I)*U(I-1) + B(I))
NEXT I
X(5) = V(5)
FOR I =4 TO 1 STEP -1
X(I) = U(I)*X(I+1) + V(I)
NEXT I
FOR I =1 TO 5
R(I) = D(I)-A(I)*X(I-1)-B(I) *X(I)-C(I)*X(I+1)
PRINT X ; I; = ; X(I); R; I; R(I)
NEXT I
Рис.2.1. Программа решения методом прогонки.
2.3 Метод простой итерации (метод Якоби)
Пример: Преобразовать систему уравнений:
7x1 + 4x2 -x3= 7
2x1+6x2+3x3=-2 (2.15)
-x1+ x2 + 4x3=4
к виду, пригодному для построения итерационного процесса методом Якоби и выполнить три итерации.
Решение:
2.4 Метод Зейделя
Решение:
3. Численные методы решения систем нелинейных уравнений
3.1 Метод простой итерации (метод Якоби)
Пример: Найти решение системы (3.7) методом Зейделя с точностью =0,001.
F(x,y)=2sin(x+1)-y-0.5 = 0
(3.7)
G(x,y)=10cos(y-1)-x+0.4 = 0
Решение:
Программа, реализующая решение данной задачи, представлена на рис.3.2.
CLS
REM LR-3-2, m=13, n=5
INPUT X,Y, M1,M2
1 X=X-(2*SIN(X+1)-Y - 0.5)/M1
Y=Y-(10*COS(Y-1)-X+0.4)/M2
PRINT X,Y
INPUT TT
GOTO 1
END
Рис.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)
методом Ньютона с точностью =0,001.
Решение:
Программа реализующая метод Ньютона для указанной задачи представлена на рис. 3.3.
REM LR-3-3, m=13, n=5
INPUT X, Y
1 F = 2*SIN(X+1)-Y - 0.5
G = 10*COS(Y-1)-X+0.4
Fx =2*COS(X+1)
Fy =-1
Gx =-1
Gy =-10*SIN(Y-1)
D = Fx*Gy- Gx*Fy
DX=(G*Fy-F*Gy)/D
DY=(F*Gx-G*Fx)/D
X =X+DX
Y =Y+DY
PRINT X;Y; F;G;DX;DY;
INPUT TT
GOTO 1
END
Рис.3.3. Программа, реализующая метод Ньютона
3.3 Приближение функции по методу наименьших квадратов (МНК)
Пример: Подобрать аппроксимирующий полином первой степени y=ax+b для данных
xi 0 1 2 3
yi 0.1 0.9 2.1 3
Решение:
Пример: Используя МНК построить эмпирическую зависимость y=ax2+bx+c, аппроксимирующую следующие табличные значения:
xi -2 -1 0 1 2
yi 6 2 -1 -2 -1
Решение:
3.4 Интерполяционный полином в форме Лагранжа
Пример. Пусть задана таблица 4.4
Таблица 4.4
xi -1 0 1/2 1
yi 0 2 9/8 0
Решение.
4. Численное интегрирование
4.1 Метод прямоугольников
Программа вычисления интеграла методом прямоугольников представлена на рис. 5.2.
REM LR-5-1, m=13, n=5
DEF FNF(X)=2*X^2+.1
DATA 0,1,8
READ A,B,N
H=(B-A)/N
S=0: X=A
1 S=S +FNF(X)*H
X=X+H
IF XB THEN 1
PRINT S=; S
END
Рис. 5.2. Программа вычисления интеграла методом прямоугольников.
4.2 Метод трапеций
Программа вычисления интеграла методом трапеций представлена на рис. 5.4.
REM LR-5-2, m=13, n=5
DEF FNF(X)=2*X^2+0.1
DATA 0,1,8
READ A,B,N
H=(B-A)/N
S=(FNF(A)+FNF(B))/2
X= A+H
1 S=S+FNF(X)
X=X+H
IF X<B THEN 1
S=S*H
PRINT S=; S
END
Рис. 5.4. Программа вычисления интеграла методом трапеций.
Метод парабол (Симпсона)
Пример: Требуется вычислить определенный интеграл методами прямоугольников, трапеций и парабол:
I = (2x2+0,1) dx
Решение:
Программа вычисления интеграла методом парабол (Симпсона) представлена на рис. 5.6.
CLS
REM LR-5-3, m=13, n=5
DEF FNF(X)=2*X^2+0.1
DATA 0,1,4
READ A,B,N
H=(B-A)/N/2
S=0
X=A
1 S=S+H*(FNF(X)+4*FNF(X+H)+FNF(X+2*H))/3
X=X+2*H
IF X<B-H THEN 1
PRINT S=; S
END
Рис. 5.6. Программа вычисления интеграла методом парабол (Симпсона).
5. Решение задачи Коши для обыкновенных дифференциальных уравнений
5.1 Метод Эйлера
Пример: Решить задачу Коши методом Эйлера для дифференциального уравнения
y=x2+y, y(0)= 1 на отрезке 0;0,3 с шагом 0,1.
Решение:
Программа решения задачи Коши методом Эйлера дана на рис. 6.2.
CLS
REM LR-6-1, m=13, n=5
DEF FNY(X,Y)=X^2+Y
DATA 0, 0.3, 1, 0.1
READ A, B, Y0, H
PRINT A;Y0
X=A: Y=Y0
1 Y=Y+ FNY(X,Y)*H
X=X+H
PRINT X;Y
IF X<B THEN 1
END
Рис. 6.2. Программа решения задачи Коши методом Эйлера.
5.2 Модифицированный метод Эйлера
Пример: Решить задачу Коши модифицированным методом Эйлера для дифференциального уравнения
y=x2+y, y(0)= 1 на отрезке 0;0,3 с шагом 0.1.
Решение:
Программа решения задачи Коши модифицированным методом Эйлера дана на рис. 6.4.
CLS
REM LR-6-2, m=13, n=5
DEF FNY(X,Y)=X^2+Y
DATA 0, 0.3, 1, 0.1
READ A, B, Y0, H
PRINT A;Y0
X=A: Y=Y0
1 Y1=Y+ FNY(X,Y)*H
Y=Y+H*(FNY(X,Y)+FNY(X+H,Y1))/2
X=X+H
PRINT X;Y
IF X<B THEN 1
END
Рис. 6.4. Программа решения задачи Коши модифицированным методом Эйлера.
5.3 Метод Рунге-Кутта
Пример: Решить задачу Коши методом Рунге-Кутта для дифференциального уравнения
y=x2+y, y(0)= 1 на отрезке 0,0.3 с шагом 0.1.
Решение:
Программа решения задачи Коши методом Рунге-Кутта дана на рис. 6.5.
CLS
REM LR-6-3, m=13, n=5
DEF FNY(X,Y)=X^2+Y
DATA 0, 0.3, 1, 0.1
READ A, B, Y0, H
PRINT A;Y0
X=A: Y=Y0
1 K0 = H*FNY(X,Y)
K1 = H*FNY(X+H/2,Y+K0/2)
K2 = H*FNY(X+H/2,Y+K1/2)
K3 = H*FNY(X+H,Y+K2)
Y=Y+(K0+2*K1+2*K2+K3)/6
X=X+H
PRINT X;Y
IF X<B THEN 1
END
Рис. 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)
4·x1 + 5·x2 + x3 = 300
2·x1+ x2 + x4= 100
2·x1+ 3·x2+ x5= 160
x1,2,3,4,5 0
ЗАКЛЮЧЕНИЕ
Данные методические указания предназначены для самостоятельной работы студентов, имеющих начальные знания по программированию на языке Visual Basic. Для получения начальных знаний ниже прилагается дополнительная литература.
В этой работе были рассмотрены численные методы решения различных задач:
1) методы решения нелинейных уравнений;
2) методы решения систем линейных уравнений;
3) методы решения систем нелинейных алгебраических уравнений;
4) методы решения дифференциальных уравнений;
5) методы решения определенных интегралов;
6) методы аппроксимации дискретных функций;
7) методы решения задач линейного программирования.
Дополнительная литература
1. Калиткин Н.П. Численные методы. М.: Наука, 1978. - 512 с.
2. Солодовников А.С. Введение в линейную алгебру и линейное программирование. М.: Просвещение, 1966. - 183 с.
3. Монахов В.М. и др. Методы оптимизации. Применение математических методов в экономике. М., Просвещение, 1978. - 175 с.
4. С.В.Симонович и др. Информатика. Базовый курс. Санкт-Петербург: Издательский дом Питер. 2002, - 640 с.
5. А.В.Могилев, Н.И.Пак, Е.К.Хеннер. Информатика. - 3-е изд., перераб. и доп. - М.: Издательский центр «Академия», 2004, - 848 с.
6. М.Д.Князева. Программирование на Visual Basic 6. Учеб. Пособие. -М.: КУДИЦ-ОБРАЗ, 2006. - 176с.
7. И.К.Сафронов. Visual Basic в задачах и примерах. Санкт-Петербург: БХВ-Петербург, 2007, - 400 с.
8. Методические указания к лабораторным работам по дисциплине: "Алгоритмизация и программирование". Основы визуального программирования. /Сост.: И.Н.Гатауллин, Ф.Г.Габбасов. - Казань, КГАСУ, 2008. 61 с.
Размещено на Allbest.ru
Подобные документы
Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.
курсовая работа [149,7 K], добавлен 16.11.2008Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Численные методы решения задач, сводящиеся к арифметическим и некоторым логическим действиям над числами, к действиям, которые выполняет ЭВМ. Решение нелинейных, системы линейных алгебраических, обыкновенных дифференциальных уравнений численными методами.
дипломная работа [1,4 M], добавлен 18.08.2009Метод половинного деления как один из методов решения нелинейных уравнений, его основа на последовательном сужении интервала, содержащего единственный корень уравнения. Алгоритм решения задачи. Описание программы, структура входных и выходных данных.
лабораторная работа [454,1 K], добавлен 09.11.2012Итерационные методы решения нелинейных уравнений, системы линейных алгебраических уравнений (СЛАУ). Решение нелинейных уравнений методом интерполирования. Программная реализация итерационных методов решения СЛАУ. Практическое применение метода Эйлера.
курсовая работа [1,6 M], добавлен 20.01.2010Особенности точных и итерационных методов решения нелинейных уравнений. Последовательность процесса нахождения корня уравнения. Разработка программы для проверки решения нелинейных функций с помощью метода дихотомии (половинного деления) и метода хорд.
курсовая работа [539,2 K], добавлен 15.06.2013Численные методы линейной алгебры. Матричный метод. Методы Крамера и Гаусса. Интерации линейных систем. Интерации Якоби и Гаусса - Зейделя. Листинг программы. Численные методы в электронных таблицах Excel и программе MathCAD, Microsoft Visual Basic
курсовая работа [1,2 M], добавлен 01.06.2008Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.
курсовая работа [532,9 K], добавлен 14.01.2014Решение уравнения методом половинного деления. Программа в Matlab для уравнения (x-2)cos(x)=1. Решение нелинейных уравнений методом Ньютона. Интерполяция заданной функции. Решение системы линейных алгебраических и обыкновенных дифференциальных уравнений.
курсовая работа [1,4 M], добавлен 15.08.2012Особенности решения уравнений с одной переменной методом половинного деления. Оценка погрешности метода простой итерации. Суть решения уравнений в пакете Mathcad. Векторная запись нелинейных систем. Метод Ньютона решения систем нелинейных уравнений.
курсовая работа [2,1 M], добавлен 12.12.2013