410
Исследование таблично заданной функции
Реферат
Экономическая теория и математическое моделирование
Дана система линейных алгебраических уравнений шестого порядка. Найти ее решение методом простых итераций с заданной точностью E. Выполнить проверку истинности полученного решения. Метод простых итераций.
Русский
2013-01-06
669.5 KB
18 чел.
Санкт-Петербургский государственный морской
технический университет
Кафедра вычислительной техники и информационных технологий
Реферат
По информатике
Темы: Исследование таблично заданной функции
Выполнила
Студент гр. 1111
А. А. Щукин
Принял преподаватель
А.Ф. Высицкий
Санкт-Петербург
2011
Алгоритм и кодирование
Задача 1.
Дана система линейных алгебраических уравнений шестого порядка. Найти ее решение методом простых итераций с заданной точностью E. Выполнить проверку истинности полученного решения.
Математическая модель
Метод простых итераций - метод, принципиально не позволяющий получить точный результат за конечное число шагов. Применяется только в том случае, когда выполняется условие преобладания диагональных элементов матрицы коэффициентов. Метод простых итераций дает возможность обеспечения комплексного решения задач управления, совершенствования организационной структуры объекта, а также однократного сбора и регистрации данных, используемых несколькими информационными подсистемами.
Расчетные зависимости.
Метод простых итераций характеризуется следующей расчетной схемой:
Условие сходимости процесса итераций:
Результаты: тесты, итоги, доказательство истинности.
При решении поставленной задачи использован метод простых итераций.
На одном из этапов работы программы необходимо вводить коэффициенты и свободные члены (их матрицы представлены ниже), а также ввести желаемую точность. Например:
Точность: 5
Коэффициенты: 10 1 1 1 1 1
1 20 1 1 1 1
1 1 30 1 1 1
1 1 1 40 1 1
1 1 1 1 50 1
1 1 1 1 1 60
Свободные члены: 21
56
81
10
6
73
При данной комбинации последовательность сходится, и мы получаем такие значения X:
X[1]=2.1
X[2]=2.8
X[3]=2.7
X[4]=0.25
X[5]=0.12
X[6]=1.21666666666667
Разработка алгоритма
Листинг программы
Module Module1
Sub Main()
' программист Сидорова
' Зададим начальные коэффициенты
Dim a(6, 6) As Double
Dim b(6) As Double
Dim c(6) As Double
Dim at(6, 6) As Double
Dim bt(6) As Double
Dim toch As Double
Dim str As String
Dim var As Boolean
Console.Write("Введите точность: ")
toch = Convert.ToDouble(Console.ReadLine()) 'введение параметра точности
Console.WriteLine()
Console.Write("Введите коэффиценты: ")
Console.WriteLine()
For i = 1 To 6
For j = 1 To 6
Console.Write("A[" & i & "," & j & "]=")
a(i, j) = Convert.ToDouble(Console.ReadLine())
Next
Next
For i = 1 To 6
Console.Write("B[" & i & "]=")
b(i) = Convert.ToDouble(Console.ReadLine())
Next
' Вывод на экран начальных коэффициентов
Console.WriteLine()
Console.WriteLine("Начальные коэффициенты:")
Console.WriteLine()
For i = 1 To 6
For j = 1 To 6
If (a(i, j) = 1) Then
Console.Write("X" & j & " ")
End If
If (a(i, j) = -1) Then
Console.Write("- X" & j & " ")
End If
If ((a(i, j) <> 1) And (a(i, j) <> -1)) Then
Console.Write(a(i, j) & "X" & j & " ")
End If
If (j < 6) Then
If a(i, j + 1) >= 0 Then
Console.Write("+ ")
End If
End If
Next
Console.Write("= " & b(i))
Console.WriteLine()
Next
Console.WriteLine()
Console.WriteLine("====")
'Проверяем диагональные элементы на близость к единице
var = False
If ((a(1, 1) > 1.5) And (a(2, 2) > 1.5) And (a(3, 3) > 1.5) And (a(4, 4) > 1.5) And (a(5, 5) > 1.5) And (a(6, 6) > 1.5)) Then
var = True
End If
'Если диагональные коэффиценты далеки от единицы
If (var) Then
For i = 1 To 6
For j = 1 To 6
If i = j Then at(i, j) = 0
If i <> j Then at(i, j) = a(i, j) / (a(i, i) * (-1))
Next
Next
For i = 1 To 6
bt(i) = b(i) / a(i, i)
Next
End If
'Если диагональные элементы близки к единице
If (Not var) Then
For i = 1 To 6
For j = 1 To 6
If i = j Then
at(i, j) = (a(i, j) - 1) * (-1)
End If
If i <> j Then
at(i, j) = a(i, j) * (-1)
End If
Next
Next
For i = 1 To 6
bt(i) = b(i)
Next
End If
Dim sb As Double
Dim shod As Double
' Проверка сходимости
shod = 0
For i = 1 To 6
sb = 0
For j = 1 To 6
If at(i, j) < 0 Then sb = sb + at(i, j) * (-1)
If at(i, j) >= 0 Then sb = sb + at(i, j)
Next
If sb < 1 Then shod = 1
Next
If shod = 1 Then Console.WriteLine("Сходится! :)")
If shod = 0 Then Console.WriteLine("Не сходится! :(")
If shod = 1 Then
Dim x(6, 10000) As Double
For i = 1 To 6
x(i, 1) = bt(i)
Next
Dim sum As Double
Console.WriteLine("=======")
For i = 1 To 6
sum = 0
For j = 1 To 6
If (i = j) Then
sum = sum
End If
If (i <> j) Then
sum = sum + a(i, j) * x(j, 1)
End If
x(i, 2) = (1 / a(i, i)) * (b(i) - sum)
Next
Next
Dim gckl As Double
Dim uslv As Integer
uslv = 0
gckl = 3
While (uslv = 0)
gckl = gckl + 1
For i = 1 To 6
sum = 0
For j = 1 To 6
If (i = j) Then
sum = sum
End If
If (i <> j) Then
sum = sum + a(i, j) * x(j, gckl - 1)
End If
x(i, gckl) = (1 / a(i, i)) * (b(i) - sum)
Next
Next
'Производим проверку, достигли мы желаемой точности или нет
Dim zmod As Double
uslv = 1
For i = 1 To 6
zmod = x(i, gckl) - x(i, gckl - 1)
If (zmod < 0) Then
zmod = zmod * (-1)
End If
If (zmod > toch) Then
uslv = 0
End If
Next
If gckl = 9999 Then uslv = 1
End While
'Выводим ответ
Console.WriteLine("FINISH")
Console.WriteLine()
Console.WriteLine()
For j = 1 To 6
Console.WriteLine("X[" & j & "]=" & x(j, gckl) & " ")
Next
Console.WriteLine()
Console.WriteLine()
End If
Console.Write("Press any key")
Console.ReadKey()
End Sub
End Module
На этом изображении начало программы, в среде Visual Basic.
На данном изображении консольное окно программы после окончания ее выполнения
Задача 2.
Найти число тонн на 1 см осадки Т для случая плавания судна при осадке по ГВЛ в пресной и соленой воде (Rв = 1.025 т/м^3), если известны длина судна L м, ширина B м и коэффициент полноты площади ГВЛ α.
Математическая модель
Для решения данной задачи я использую формулы из учебника В.Б Жинкина «Теория и устройство корабля».
Расчетные зависимости.
Осадка судна вычисляется по формуле:
Т=P/Rв*S
где P число тонн, Rв плотность воды, S площадь судна.
Площадь ватерлинии вычисляется по формуле:
Swl= α*L*B,
где α - коэффициент полноты площади грузовой ватерлинии, L - длина судна, B - ширина судна.
Выводим формулу для нахождения Р:
P=Т/Rв*α*L*B
где P число тонн, T осадка судна, Rв плотность воды, α - коэффициент полноты площади грузовой ватерлинии, L - длина судна, B - ширина судна.
Т.к. Т и Rв даны нам в задаче и являются постоянными, можно записать формулу так:
P=0.01/1.025*α*L*B
Результаты: тесты, итоги, доказательство истинности.
При решении поставленной задачи использованы формулы, применяемые для вычисления численных характеристик судна.
Разработано приложение с графическим интерфейсом, позволяющее вводить необходимые числовые значения в соответствующие окна.
Пример:
Длина судна(L): 24
Ширина судна(B): 12
Коэффициент полноты площади ватерлинии (Альфа): 0,2
При нажатии кнопки «Рассчитать» выполняется вычисление, и выводится результат:
Число тонн(P): 0,000169376693766938
Отображается синим цветом.
Разработка алгоритма
P=0.01/1.025*α*L*B
Листинг программы
Public Class Form1
' программист Щукин
' Объявление переменных
Dim L, B, T, r, Alpha As Double ' Входные параметры
Dim P As Double ' Выходные параметры
Dim Err As Double ' Счетчик ошибок
' Обработка нажатия кнопки расчета
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Обнуляем счетчик ошибок
Err = 0
' Создаем массив AllText, содержащий все TextBox'ы формы
Dim AllText As Control
' Начинаем проверку на то, что введенные в текстовые поля параметры - числа
For Each AllText In Me.Controls
If TypeOf (AllText) Is TextBox Then
' Если параметр - не число, а текст, то прибавляем к счетчику ошибок единицу и меняем цвет неверного поля на красный
If Not IsNumeric(AllText.Text) Then
Err = Err + 1
AllText.ForeColor = Color.Red
End If
' Если параметр - число, то меняем цвет верного поля на черный
If IsNumeric(AllText.Text) Then
AllText.ForeColor = Color.Black
End If
End If
Next
' Если все параметры - числа, то переходим к следующему шагу:
' Начинаем проверку на то, что Альфа - не более 1 (единицы) и не менее 0 (нуля)
' и остальные параметры (L, B,) - не отрицательные или ненулевые числа
' и делаем неверные значения красными
If Err = 0 Then
If Convert.ToDouble(TextBox4.Text) > 1 Or Convert.ToDouble(TextBox4.Text) <= 0 Then
TextBox4.ForeColor = Color.Red
Err = Err + 1
End If
If Convert.ToDouble(TextBox1.Text) <= 0 Then
TextBox1.ForeColor = Color.Red
Err = Err + 1
End If
If Convert.ToDouble(TextBox2.Text) <= 0 Then
TextBox2.ForeColor = Color.Red
Err = Err + 1
End If
End If
' После проверки всех полей, смотрим, если счетчик ошибок > 0, то не производим вычисления,
' а просим пользователя исправить данные. Если все данные верны, то производим вычисления
If Err > 0 Then
Label12.ForeColor = Color.Red
Label12.Text = "Проверьте и исправьте входные данные!"
End If
' Когда все ошибки исправлены,
' расчет:
If Err = 0 Then
' Получаем значения формул из введенных пользователем данных
L = TextBox1.Text
B = TextBox2.Text
Alpha = TextBox4.Text
' Считаем по формулам
P = 0.01 / (Alpha * L * B * 1.025)
' Выводим результат
Label11.Text = "Число тонн на 1 см осадки (P) = " & P
Label12.ForeColor = Color.Green
Label12.Text = "Расчет успешно произведен"
End If
End Sub
' Проверка, что вводимые пользователем данные - числа (чтобы "на лету" менять цвет при исправлении ошибки)
Private Sub CheckUserInput(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged, TextBox4.TextChanged
' Если не число, то делаем цвет неверного значения красным
If Not IsNumeric(sender.Text) Then
sender.ForeColor = Color.Red
End If
' Если число, то делаем цвет верного значения черным
If IsNumeric(sender.Text) Then
sender.ForeColor = Color.Black
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Close()
End Sub
End Class
На данном изображении программа, по расчету характеристик судна, выполненная в среде Visual Basic.
На данном изображении графическая составляющая программы, окно запроса параметров судна.
Литература
К. П. Курцева, Е. Г. Шешуков
« Методы вычислений. Часть 1. Численные методы алгебры. Конспекты лекций и задачи»
А. Ф. Высицкий, С. Н. Леора, Г. В. Проценко, А. В. Смольников, С. К. Шавинская
« Курсовая работа по информатике. Учебное пособие » (12-16 стр., 188-200 стр.)
В.Б. Жинкин
« Теория и устройство корабля »
Свободна энциклопедия « Википедия »
начало
- - - - - - - - - -[ с клавиатуры
- - - - - - - - - -[ на экран
- - - - - - - - - -[ с клавиатуры
- - - - - - - - - -[ на экран
для i=1 до 6 с шагом 1
6 для j=1 до 6 с шагом 1
с шагом 1
Aij
Введите коэффициенты
Ввод
Введите точность
нет
да
- на экран ]- - - - - - - - - - --
- - - - - - - - - -[ на экран
Не сходится
сходится
- - - - - - - - - -[ с клавиатуры
конец
∆=0
пауза
Проверка выполнения условия сходимости
Bi
начало
- - - - - - - - - -[ с клавиатуры
Ввод значений:
L, B, α.
1> α >0
L>0
B>0
нет
[ на экран
«Проверьте и исправьте входные данные»
да
пауза
конец
А также другие работы, которые могут Вас заинтересовать | |||
6586. | Философия бытия (онтология). Материя и ее атрибуты. Категории диалектики | 31.98 KB | |
Философия бытия (онтология). Философская категория бытия. Формы бытия. Материя и ее атрибуты. Диалектика. Категории диалектики. Проблема бытия изначально включала два подхода в ответе на вопрос: что избрать первоначалом философствован... | |||
6587. | Человек и природа. Экологическое сознание и перспективы цивилизации | 29.32 KB | |
Человек и природа Общество и природа в истории философии. Экологическое сознание Перспективы цивилизации Взаимоотношения общества с природой понимаются как отношения между обществом - целостной системой человеческого общежития - и пр... | |||
6588. | Человек как предмет философии. Сущность и содержание антропосоциогенеза | 31.99 KB | |
Человек как предмет философии. Проблема человека в истории философии. Сущность и содержание антропосоциогенеза. Биологическое и социальное в человеке. Немецкому философу-просветителю Иоганну Гердеру, в трудах которого философия в... | |||
6589. | Ценности человеческого существования. Человек в системе мира. Человек и Космос | 26.73 KB | |
Ценности человеческого существования. Учение о ценностях. Проблема жизни и смерти. Человек в системе мира. Человек и Космос. Человек чуть ли не постоянно находится в состоянии поиска ответа на знаменитый вопрос Сократа: Что есть благо... | |||
6590. | Свобода и ответственность личности. Бегство от свободы и вседозволенность | 30.91 KB | |
Свобода и ответственность личности. Свободен ли человек? Проблема выбора. Бегство от свободы. Вседозволенность. Свобода - нравственный императив. Свобода - одно из важнейших понятий философии. О свободе (независимости и самостоятельн... | |||
6591. | Сознание и познание. Познание, истина, практика | 34.34 KB | |
Сознание и познание Сущность и возникновение сознания. Познание, истина, практика. Сознание существует как субъективная реальность, как идеальное, оно проявляет себя как отношение к действительности, но в то же время - оно есть реальное дело, к... | |||
6592. | Наука и ее роль в жизни общества. Функции, особенности и методы научного познания | 29.91 KB | |
Наука и ее роль в жизни общества Функции, особенности и методы научного познания. Стадии и уровни научного познания. НТР и моральные проблемы. Наука - это особая сфера человеческой деятельности, направленная на добывание, осмысление, системати... | |||
6593. | Человек и общество. Общество как процесс. Человек и история. | 36.58 KB | |
Человек и общество. Общество как система. Общество как процесс. Человек и история. Общество - система деятельности и жизни людей, объединенных территорией проживания, эпохой, историей, традициями и культурой. Основное предназначение обще... | |||
6594. | Духовная жизнь общества. Общественное сознание | 30.87 KB | |
Духовная жизнь общества. Общественное сознание. Основные формы духовной жизни общества. Общественное сознание и его формы. Основными формами духовной жизни общества принято считать мораль, право, религию, науку, искусство. Мораль - это... | |||