Численные методы в визуальном программировании

  • Вид работы:
    Методичка
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    69,1 Кб
  • Опубликовано:
    2015-02-15
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Численные методы в визуальном программировании

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ РФ

КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ АРХИТЕКТУРНО-СТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ

Кафедра прикладной математики









МЕТОДИЧЕСКИЕ УКАЗАНИЯ

по курсу "Информатика"

для самостоятельной работы студентов

всех специальностей

ЧИСЛЕННЫЕ МЕТОДЫ

в визуальном программировании

ЧАСТЬ 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 с.

Похожие работы на - Численные методы в визуальном программировании

 

Не нашел материал для своей работы?
Поможем написать качественную работу
Без плагиата!