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

нет

[  на экран

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

да

пауза

конец


 

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

37697. Встановлення вимог до функціональності програмного забезпечення із застосуванням засобів UML (Use Case diagram) та вербальних Специфікацій 150 KB
  Поселення відбувається порт’є і далі передається адміністратору для підтвердження внесення даних до БД. Адміністратор виконує всі операції з БД в тому числі: внесення змінення та видалення записів з бази а також внесення службової інформації що передбачає внесення особистих даних адміністратора та портьє. Портьє надає інформацію про поселення клієнтів адміністратору АС у вигляді: Перелік кімнат різних класів у готелі. Основний потік Надання інформації адміністратору.
37698. Визначення параметрів датчиків температури 117 KB
  Установка складається із теплового обєкта ТО резервуар з трансформаторним маслом в якому розміщені робочі гарячі спаї батареї термопар БТ резистори. Батарея термопар складається із трьох послідовно включених термопар завдяки чому її сумарна тсрмое. Холодні кінці термопар заглиблені в рідину що має температуру оточуючого середовища. За допомогою контрольного термометра ТІ вимірять температуру холодних кінців термопар t0.
37700. Критерій Стьюдента 74.92 KB
  Щільність розподілу Графік щільності розподілу Стьюдента за зовнішнім виглядом нагадує нормальні криві. Але вони значно повільніше спадають до осі t якщо особливо за малих значень n Складено таблиці розподілу Ст’юдента здебільшого виду для кількості ступенів волі від 1 до 20. Якщо кількість ступенів волі більша то можна застосовувати нормальний закон розподілу з нульовим математичним сподіванням і одиничною дисперсією. Щільність цього розподілу подається формулою: Щільність розподілу Фішера має графік зображений на Для розподілу Фішера...
37701. Ознайомлення з середовищем програмування. Структура програми. Програмування лінійних та розгалужених алгоритмів 1.24 MB
  Тема: ознайомлення з середовищем програмування. Структура програми. Програмування лінійних та розгалужених алгоритмів. Мета: навчитись програмувати лінійні та розгалужені алгоритми мовою програмування С.
37702. Моделювання і розробка ІС 691 KB
  У рамках Rtionl Rose використовуються наступні графічні діаграми UML: Діаграма варіантів використання – дозволяє здійснити аналіз функцій системи. Діаграма класів – дозволяє описати структуру інформаційних об’єктів ІС. Діаграма станів – дозволяє відобразити зміни станів окремого об'єкта чи суб’єкта ІС представляючи його у вигляді спеціального орієнтованого графа. Діаграма діяльності використовуються для опису інформаційних процесів; Діаграма послідовності – служить для моделювання характеристик взаємодії передачі і прийому...
37703. Побудова локальної комп’ютерної мережі 1.95 MB
  2 Завдання: Навчитись встановлювати драйвери мережних адаптерів в середовищі операційних систем Windows 2000 XP; дослідити схеми підключення мережних пристроїв в локальній комп’ютерній мережі топології â€зірка†та â€ієрархічна зіркаâ€; навчитись налаштовувати адресацію комп’ютерів в локальній комп’ютерній мережі; дослідити способи перевірки працездатності комп’ютерної мережі за допомогою діагностичних утиліт. ІРАДРЕС МАСКУ ПОДСЕТИ ШЛЮЗ...
37705. Оцінка розміру та вартості проекту за моделлю COCOMO 64.5 KB
  Тема: Оцінка розміру та вартості проекту за моделлю COCOMO Мета: набуття навиків у прогнозуванні характеристик проектів ПЗ з використанням конструктивної моделі вартості CОnstructive CОst MОdel. Короткі теоретичні відомості COCOMO – це множина моделей яка дозволяє обчислити вартість проекту ПЗ на основі одиниці виміру кількість рядків коду LOC. COCOMO включає наступні моделі: базова COCOMO застосовується у фазі специфікування вимог; проміжна COCOMO застосовується у фазах розробки множин вхідних умов проекту наприклад ...