Численные методы в визуальном программировании
Приведение численных методов решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач программирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 09.12.2014 |
Размер файла | 123,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ
КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ АРХИТЕКТУРНО-СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ
Кафедра прикладной математики
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
по курсу "Информатика"
для самостоятельной работы студентов
всех специальностей
Численные методы в визуальном программировании
Казань
2008
Методические указания по курсу "Информатика" для самостоятельной работы студентов всех специальностей. Численные методы в визуальном программировании. Часть 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.
Рис 1. Заготовка формы для примера 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
к виду, пригодному для построения итерационного процесса методом Якоби и выполнить три итерации.
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.3 Метод Ньютона
Пример: Найти решение системы (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. Программа, реализующая метод Ньютона
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
Рис. 4.2. Программа вычисления интеграла методом прямоугольников
4.2 Метод трапеций
Программа вычисления интеграла методом трапеций представлена на рис. 4.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
Рис.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
Рис. 5.2. Программа решения задачи Коши методом Эйлера.
5.2 Модифицированный метод Эйлера
Пример: Решить задачу Коши модифицированным методом Эйлера для дифференциального уравнения
y=x2+y, y(0)= 1 на отрезке 0;0,3 с шагом 0.1.
Решение:
Программа решения задачи Коши модифицированным методом Эйлера дана на рис. 5.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
Рис. 5.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
Подобные документы
Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014Итерационные методы решения нелинейных уравнений, системы линейных алгебраических уравнений (СЛАУ). Решение нелинейных уравнений методом интерполирования. Программная реализация итерационных методов решения СЛАУ. Практическое применение метода Эйлера.
курсовая работа [1,6 M], добавлен 20.01.2010Численные методы решения задач, сводящиеся к арифметическим и некоторым логическим действиям над числами, к действиям, которые выполняет ЭВМ. Решение нелинейных, системы линейных алгебраических, обыкновенных дифференциальных уравнений численными методами.
дипломная работа [1,4 M], добавлен 18.08.2009Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.
курсовая работа [149,7 K], добавлен 16.11.2008Обзор существующих методов по решению нелинейных уравнений. Решение нелинейных уравнений комбинированным методом и методом хорд на конкретных примерах. Разработка программы для решения нелинейных уравнений, блок-схемы алгоритма и листинг программы.
курсовая работа [435,8 K], добавлен 15.06.2013Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.
курсовая работа [423,0 K], добавлен 17.02.2010Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.
курсовая работа [398,3 K], добавлен 16.06.2009Использование MS Excel для математических расчетов. Описание численных методов решения системы линейных алгебраических уравнений. Решение систем линейных алгебраических уравнений с методами Крамера и Зейделя и с помощью табличного процессора MS Excel.
курсовая работа [1,6 M], добавлен 14.02.2021Метод половинного деления как один из методов решения нелинейных уравнений, его основа на последовательном сужении интервала, содержащего единственный корень уравнения. Алгоритм решения задачи. Описание программы, структура входных и выходных данных.
лабораторная работа [454,1 K], добавлен 09.11.2012Исследование свойств и поведения динамических объектов, описываемых системами обыкновенных нелинейных дифференциальных уравнений. Описание методов, программ и алгоритмов решения систем линейных и нелинейных алгебраических уравнений в системе MathCAD.
контрольная работа [255,1 K], добавлен 16.01.2009