Нахождение экстремумов функций 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Нахождение экстремумов функций



Цель работы: выработать навык использования надстройки MS Excel Поиск решения.

Задание 2: Нахождение экстремумов функций

Вариант 15:

 

 

Выполнение задания:

Нахождение экстремумов функций

 

Решение систем нелинейных уравнений

 

 

 

3. Строим график равносильного уравнения:

 

 

Вычисление производной функции

Вычисление определенных интегралов

Цель работы: выработать навык использования табличного процессора MS Excel для численного (приближенного) вычисления производных функций (дифференцирование) и определенных интегралов (интегрирование), заданных в табличном виде.

Задание 3.1: Вычисление производной функции

[1; 5]

Задание 3.2: Вычисление определенного интеграла

Выполнение задания:

 

 

Пользовательские формы в VBA

Цели работы: создание и использование пользовательских форм при решении прикладных задач

Задание 4:

Создать пользовательскую форму для расчета гипотенузы прямоугольного треугольника, если заданы его катеты. Также в этой форме должен быть предусмотрен расчет (при заданной опции) площадь треугольника.

 

Выполнение задания:

 

Программирование на языке VBA.

Циклические структуры.

Цель работы: Познакомится с основами программирования на языке Visual Basic for Applications (VBA) на примере создания пользовательских процедур.

Задание 5: Для выражения своего варианта:

1. Создайте процедуру табулирования выражения (образец − Пример 1) c использованием цикла типа “For … Next”.

2. Создайте процедуру табулирования выражения (образец − Пример 2) c использованием цикла типа “Do While … Loop”.

3. Блок-схему алгоритма задания запишите в тетрадь.

15

 

Выполнение задания 5.1 и 5.2:

Блок-схема для задания 5.1                           Блок-схема для задания 5.2

 

 

 

 


Работа с одномерными массивами данных в VBA.

Цель работы: выработать навыки создания алгоритмов и программ обработки одномерных массивов данных в MS Excel на языке программирования VBA.

Задание 6:

1. Для функции своего варианта составить программу обработки одномерного массива. При задании массива использовать случайные числа. Ввод-вывод одномерного массива организовать в ячейки таблицы.

2. Разработать блок-схему алгоритма решения задачи.

Выполнение задания:

Вариант 15

Написать программу, которая меняет местами минимальный и максимальный элемент массива целых чисел.

Код программы:

Sub Main()

Dim F() As Integer

Dim I As Integer, J As Integer, X As Integer, Min As Integer, Max As Integer, MestoMin As Integer, MestoMax As Integer

Dim pos_x As String

G = InputBox("Размер массива G = ")

ReDim F(1 To G)

For I = 1 To G

   F(I) = Rnd * 100

   Range("A1").Value = F(I)

   pos_x = "a" & CStr(I)

   Range(pos_x).Value = F(I)

Next I

Max = F(1)

Min = F(1)

For I = 1 To G

   If Min > F(I) Then

       Min = F(I)

       MestoMin = I

       J = MestoMin

   End If

   If Max < F(I) Then

       Max = F(I)

       MestoMax = I

       X = MestoMax

   End If

Next I

Range("B1") = "Мин"

Range("C1") = "Макс"

Range("B2").Value = Min

Range("C2").Value = Max

Range("B3") = "Место минимума"

Range("C3") = "Место максимума"

Range("B4").Value = MestoMin

Range("C4").Value = MestoMax

MsgBox ("Минимальное значение массива =" & Min & vbCrLf & " Максимальное значение массива =" & Max)

MsgBox ("Место минимума =" & MestoMin & vbCrLf & " Место максимума =" & MestoMax)

F(J) = Max

F(X) = Min

MsgBox ("Массив с заменой в столбце D")

For I = 1 To G

   Range("D1").Value = F(I)

   pos_x = "d" & CStr(I)

   Range(pos_x).Value = F(I)

Next I

End Sub

Блок-схема к заданию 6:

Блок номер 2

Вариант: №15

Задание1:

В заданном массиве A (N) поменяйте местами наибольший и наименьший элементы (первые по порядку, если их несколько).

 

1. Алгоритм в виде блок-схемы:

Начало
Ввод «Введите число в 16 сс:»
Вывод number N  
Ввод «Перевод в 5 сс»
1=(number,2)
Ввод 1
Конец

 


2. Код программы

using System;

 

namespace SistSchs

{

class Program

{

   static void Main(string[] args)

   {

       Console.WriteLine("Введите число: ");

       int number = Convert.ToInt32(Console.ReadLine(), 16);

       Console.WriteLine("Перевод в 5 систему счисления:");

       string l = Convert.ToString(number, 5);

       Console.WriteLine(l);

       Console.ReadLine();

   }

 

}

}

3. Результат выполнения программы

Задание2

15.Выведите на печать номера точек, лежащих в круге радиусом R с центром в начале координат. Координаты точек заданы массивами X(N) и Y(N).

Начало
Цикл i пока i<Длины массива
Вывод «Из любой точки.»
X[i]= случайному значению от (-20;20))
Вывод «Введите размер.»
Конвертация G
Вывод «Введите радиус.»
Конвертация R
Y[i]= случайному значению от (-20;20))
Цикл i пока i< Длины массива  
F = (X[i] ^ 2 + Y[i] ^ 2)    
1

R>F
Нет
Да
Вывод «Координаты точки…»
Конец
1

 

Код программы:

using System;

namespace ПрактикаЛаба2

{

class Program

{

   static void Main(string[] args)

   {

       int G;

       int R;

       double F;

       Random Rnd = new Random();

       Console.WriteLine("Из любой точки координатной плоскости можно провести отрезок к началу координат. Если длина этого отрезка больше радиуса круга, то точка лежит за пределами круга и, следовательно, не принадлежит ему. Если же отрезок, соединяющий точку и начало координат, меньше радиуса круга с центром в начале координат или равен ему, то точка будет принадлежать кругу.\nОтрезок между любой точкой и нулевой точкой(началом координат) является гипотенузой прямоугольного треугольника, катеты которого равны значениям x и y координаты данной точки.");

       Console.Write("Введите размер массива = ");

       G = Convert.ToInt32(Console.ReadLine());

       Console.Write("Введите радиус круга = ");

       R = Convert.ToInt32(Console.ReadLine());

       double[] X = new double[G];

       double[] Y = new double[G];

       for (int i = 1; i < X.Length; i++)

       {

           X[i] = Rnd.Next(-20,20);

           Y[i] = Rnd.Next(-20,20);

       }

       for (int i = 1; i < X.Length; i++)

       {

           F = Math.Sqrt((X[i]*X[i]) + (Y[i]*Y[i]));

           if (R > F)

           {

           Console.WriteLine("Координаты точки лежащей в круге ({0};{1})",X[i],Y[i]);                   

           }

       }

           Console.ReadLine();

   }

}

}

Результат программы

 

Задание №3

Разработать и отладить программу, в которой реализовать алгоритмы сортировки и поиска

15. повторяющиеся элементы массива А, которых нет в массиве В Слиянием Линейный

 

Блок-схема

 

Код программы:

using System;

namespace Практика Лаба3

{

class Program

{

   static void Main(string[] args)

   {

       Random Rnd = new Random();

       int G;

       Console.Write("Введите размер массива = ");

       G = Convert.ToInt32(Console.ReadLine());

       int[] A = new int[G];

       int[] B = new int[G];

       int[] C = new int[G];

       for (int i = 0; i < A.Length; i++)

       {

           A[i] = Rnd.Next(1, 20);

           B[i] = Rnd.Next(1, 20);

       }

       for (int j = 0; j < A.Length; j++)

       {

           for (int i = A.Length - 1; i > 0 && i!= j; i--)

           {

               if (A[j] == A[i])

               {

                   int k = 0;

                   do

                   {

                       if (A[j]!= B[k])

                       {

                           k++;

                           if (k >= A.Length)

                           {

                               C[j] = A[j];

                               break;

                           }

                       }

                       else

                       {

                           break;

                       }

                   }

                   while (true);

               }

           }

       }

       MergeSort1(A);

       MergeSort1(B);                      

           

       Console.Write("Массив А:|");

       for (int i = 0; i < A.Length; i++)

       {

           Console.Write("{0}|", A[i]);

       }         

       Console.Write("\nМассив B:|");

       for (int i = 0; i < B.Length; i++)

       {

           Console.Write("{0}|", B[i]);

       }

       Console.Write("\nЭлементы,повторяющиеся в массиве А, которых нет в массиве В.\n");

       for (int i = 0; i < C.Length; i++)

       {

           if (C[i]!= 0)

           {

               Console.Write("|{0}", C[i]);

           }             

       }

       Console.Write("|");

       Console.ReadLine();

   }                

       static void Merge(int[] array, int lowIndex, int middleIndex, int highIndex)

       {

           var left = lowIndex;

           var right = middleIndex + 1;

           var tempArray = new int[highIndex - lowIndex + 1];

           var index = 0;

           while ((left <= middleIndex) && (right <= highIndex))

           {

               if (array[left] < array[right])

               {

                   tempArray[index] = array[left];

                   left++;

               }

               else

               {

                   tempArray[index] = array[right];

                   right++;

               }

               index++;

           }

           for (var i = left; i <= middleIndex; i++)

           {

               tempArray[index] = array[i];

               index++;

           }

           for (var i = right; i <= highIndex; i++)

           {

               tempArray[index] = array[i];

               index++;

           }

           for (var i = 0; i < tempArray.Length; i++)

           {

               array[lowIndex + i] = tempArray[i];

           }

       }     

   static int[] MergeSort(int[] array, int lowIndex, int highIndex)

       {

       if (lowIndex < highIndex)

       {

           var middleIndex = (lowIndex + highIndex) / 2;

           MergeSort(array, lowIndex, middleIndex);

           MergeSort(array, middleIndex + 1, highIndex);

           Merge(array, lowIndex, middleIndex, highIndex);

       }

       return array;

       }

       static int[] MergeSort1(int[] array)

       {

       return MergeSort(array, 0, array.Length - 1);

       }     

   }

}

 

Результат программы

Задание №10

15.По трем заданным матрицам A (N, N), B (N, N) и C (N, N) постройте матрицу Х того же размера, каждый элемент которой вычисляется по формуле Xij = max { a (I, J), b (I, J), с (I, J)}.

Блок-схема

Начало
Цикл i пока i<N
A[i,j]= случайному значению от (0,100)
Вывод «Введите размер.»
Конвертация N
B[i,j]= случайному значению от (0,100)
Цикл j пока j<N
C[i,j]= случайному значению от (0,100)
1

 

 

Цикл j пока j<N
Цикл i пока i<N
max=A[j, i]              X[j, i]=max
1
(max < B[j, i])
max=B[j, i]              X[j, i]=max
(max < C[j, i])
max=C[j, i]              X[j, i]=max
2

2
Цикл iпока i<N
Цикл j пока j<N
Вывод «Массив А:»
Вывод «:»,A[i,j]
Вывод «»
Цикл iпока i<N
Цикл j пока j<N
Вывод «:»,B[i,j]
Вывод «»
Вывод «Массив B»
3

3
Цикл iпока i<N
Цикл j пока j<N
Вывод «Массив C:»
Вывод «:»,C[i,j]
Вывод «»
Цикл iпока i<N
Цикл j пока j<N
Вывод «:»,X[i,j]
Вывод «»
Вывод «Итоговый массив X»  
Конец

Код программы:

using System;

 

namespace ПрактикаЛаба4

{

class Program

{

   static void Main(string[] args)

   {

       int N;

       int max;

       Random Rnd = new Random();

       Console.Write("Введите размер массива = ");

       N = Convert.ToInt32(Console.ReadLine());

       int[,] A = new int[N, N];

       int[,] B = new int[N, N];

       int[,] C = new int[N, N];

       int[,] X = new int[N, N];

           

           for (int i = 0; i < N; i++)

               for (int j = 0; j < N; j++)

               {

               A[i, j] = Rnd.Next(0, 100);

               B[i, j] = Rnd.Next(0, 100);

               C[i, j] = Rnd.Next(0, 100);

               }

       for (int j = 0; j < N; j++)

           for (int i = 0; i < N; i++)

           {

               max = A[j, i];

               X[j, i] = max;

               if (max < B[j, i])

               {

                   max = B[j, i];

                   X[j, i] = max;

               }                

                   if (max < C[j, i])

                   {

                       max = C[j, i];

                       X[j, i] = max;

                   }                 

           }

       Console.WriteLine("Массив А:");

       for (int i = 0; i < N; i++)

       {

           for (int j = 0; j < N; j++)

           {

               Console.Write("{0,4}", A[i, j]);

           }

           Console.WriteLine();

       }

           Console.WriteLine("Массив B:");

       for (int i = 0; i < N; i++)

       {

           for (int j = 0; j < N; j++)

           {

               Console.Write("{0,4}", B[i, j]);

           }

           Console.WriteLine();

       }

       Console.WriteLine("Массив C:");

       for (int i = 0; i < N; i++)

       {

           for (int j = 0; j < N; j++)

           {

               Console.Write("{0,4}", C[i, j]);

           }

           Console.WriteLine();

       }

       Console.WriteLine("Итоговый массив X:");

       for (int i = 0; i < N; i++)

       {

           for (int j = 0; j < N; j++)

           {

               Console.Write("{0,4}", X[i, j]);

           }

           Console.WriteLine();

       }

       Console.ReadLine();

   }

}

}


 

Результат выполнения

 

Выводы:

Программа данной практики была составлена на основе всех тех знаний, которые были усвоены в 1 и 2 семестрах 1 курса в университете. Благодаря учебной практике были закреплены знания и навыки, получены при изучении курсов «Информатика», «Алгоритмические языки и программирование».

Первый модуль учебной практики включает в себя 6 заданий по курсу «Информатика». Все задания были направлены на повторение и закрепление знаний по темам:

· Задание 1. Перевод чисел из одной системы счисления в другую.

· Задание 2. Нахождение экстремумов функций. Решение системы нелинейных уравнений.

· Задание 3. Вычисление производной функции. Вычисление определенных интегралов.

· Задание 4. Разработка пользовательских форм в VBA.

· Задание 5. Программирование циклических структур в VBA.

· Задание 6. Работа с одномерными массивами данных в VBA.

Все темы и задания были проанализированы и выполнены.

Второй модуль по учебной практике включает себя 4 задания по курсу «Алгоритмические языки и программирование». Все задания были направлены на повторение и закрепление знаний по темам:



Поделиться:


Последнее изменение этой страницы: 2021-05-27; просмотров: 84; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.59.187 (0.182 с.)