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

нет

[  на экран

«Проверьте и исправьте входные данные»

да

пауза

конец


 

А также другие работы, которые могут Вас заинтересовать

30468. Основные модели организации публичной власти на местах в зарубежных странах 14.74 KB
  Для первых характерно избрание местной администрации местными представительными органами из своего состава причем нередко глава администрации мэр и т. но и главы местной администрации а также некоторых других должностных лиц исполнительной и судебной власти казначея прокурора мирового судьи вплоть до шерифа начальника полиции. Оно предполагает наличие у местной единицы собственной компетенции охватывающей вопросы местного значения; гарантированной конституцией и законом самостоятельности па отношению к государственной власти в...
30469. Договоры и конституционные процедуры разрешения конфликтов между федерацией и ее субъектами в зарубежных странах 15.77 KB
  Следует отметить возможность федеральной интервенции в случае конфликта между федеральной властью и властями субъектов федерации или в случае когда по каким либо причинам власть субъекта федерации не может функционировать нормально. Если земля не выполняет федеральные обязанности возложенные на нее Основным законом или иным федеральным законом то...
30470. Конституционная ответственность, ее субъекты и виды в зарубежных странах 14.2 KB
  В последнее время в литературе стали признавать наличие особого вида ответственности âконституционнойâ хотя до сих пор многие ее положения остаются дискуссионными. Так трудно согласиться с тем что конституционная ответственность является разновидностью политической ответственности а равно с тем что конституционная ответственностью объединяет в себе политическую моральную и юридическую ответственность. Конституционная ответственность это самостоятельный вид...
30471. Особенности Конституции и конституционного права США 14.92 KB
  Особенности Конституции и конституционного права США. Ныне действующая конституция США была принята 17 сентября 1787 г. Конституция США является выдающимся политикоправовым актом. Конституция США первая в истории писаная конституция крупного государства.
30472. Порядок выборов Президента и Конгресса США 14.83 KB
  Высшим органом законодательной власти является Конгресс США состоящий из двух палат: Палаты представителей и Сената. Палата представителей представляет интересы народа в целом. Выборы в Палату представителей проходит в первый вторник после первого понедельника ноября каждого четного года. Члены Палаты представителей избираются по мажоритарной системе относительного большинства без требования кворума.
30473. Система сдержек и противовесов в форме правления США 15.06 KB
  Влиятельная фигура в ранней Америке Джон Адамс говорил что целью конституционного правительства является создание правительства законов а не правительства людей. Для Адамса великой идеей к наделению широкими полномочиями правительства и в то же время подчинению его букве закона стал принцип разделения правительственных полномочий. Эта концепция разделения властей исторически ассоциируемая со школой французского философа Монтескье предотвратила злоупотребление властью путем отказа от концентрации власти в одной ветви или одном...
30474. Особенности конституционного права Соединенного королевства 16.64 KB
  Британский конституционализм представляет собой весьма своеобразное явление правовой действительности. Древние и крепкие корни парламентаризма англосаксонская правовая система монархическая форма правления все это делает фактическую и юридическую конституцию Великобритании уникальной. Эта страна по сей день не имеет в качестве основного закона единого писаного нормативного правового акта. Возводимое в течение многих столетий здание британского конституционализма имеет в качестве прочного и надежного фундамента общее право...
30475. Британский парламент, его взаимоотношения с Королевой и Правительством 16.23 KB
  Законодательная власть в Великобритании принадлежит парламенту но по точному смыслу британской конституции парламент триединое учреждение: оно включает главу государства монарха палату лордов исторически палату знати и высшего духовенства и палату общин исторически палату простолюдинов. Это понятие связано с тем что закон становится таковым если он принят двумя палатами есть некоторые исключения из этого правила в пользу нижней палаты и подписан монархом. Теоретически монарх в Великобритании считается...
30476. Реформа политико-территориального устройства Соединенного Королевства 14.64 KB
  Поэтому для других трех регионов в большей или меньшей степени всегда были свойственны стремление к усилению самоуправления или даже сепаратизм. право первичного законодательства в сферах здравоохранения образования местного самоуправления и политикоадминистративного деления жилищного и коммунального хозяйства окружающей среды и т. В каждой Местной единице действуют органы местного самоуправления: выборные непосредственно населением советы и исполнительные органы. Компетенция органов местного самоуправления традиционна однако...