ОЦЕНКА ПРАКТИКИ КАФЕДРОЙ
Замечания по практике и составлению отчета (выполнение программы и графика практики, участие в научной и других работах, выполнение индивидуальных заданий, качество оформления отчета и т.п. _______________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
Практика оценена на __________________________________________________________
(отлично, хорошо, удовлетворительно, неудовлетворительно)
Зав. кафедрой _______________________________________________________
(подпись)
Рук. практикой от университета ______________________________________
Задание 1. Разработка алгоритмов и программ для простых задач.
1.1. Цель задания.
Закрепление начальных знаний по разработке алгоритмов и составление программ на С#, для математических задач по предмету «Алгоритмические языки и программирование».
1.2. Содержание задания.
Задание состоит из примеров, взятых, из курсов линейной алгебры и аналитической геометрии, механики, а также математического анализа, вычисление, которых требуется выполнить на ПК.
Задача 1. Найти скалярное произведение двух n – мерных векторов
( и ( по формуле:
=
где n, , (i=1, 2, … n) – заданы.
Блок схема имеет следующий вид:
Рис.1. Блок схема для вычисления скалярного произведения двух n – мерных векторов
Ниже приводится текст программы с результатами расчетов:
//Основная программа
int n;
Console.WriteLine("Введите размерность пространнства");
n = int.Parse(Console.ReadLine());
double [] A = new double [n]; // Объявление массива координат вектора А
Console.WriteLine("Введите координаты вектора А:");
for (int i = 0; i < n; i++)
{
A[i] = double.Parse(Console.ReadLine());
}
Console.Write("Координаты вектора А = (");
foreach (int i in A)
{
Console.Write(" " + i + " ");
}
Console.Write(")");
double [] B = new double[n]; // Объявление массива координат вектора B
Console.WriteLine();
Console.WriteLine("Введите координаты вектора B:");
for (int j = 0; j < n; j++)
{
B[j] = double.Parse(Console.ReadLine());
}
Console.Write("Координаты вектора B = (");
foreach (int j in B)
{
Console.Write(" " + j + " ");
}
Console.Write(")");
Console.WriteLine();
double S = 0;
for (int k = 0; k < n; k++)
{
for (int l = 0; l < n; l++)
{
if (k==l)
{
S = S+ A[k] * B[l]; // Скалярное произведение полученное, как сумма по координатного произведения векторов
}
}
}
Console.Write("Скалярное произведение векторов ");
Console.WriteLine("(A, B) = " + S);
Console.ReadKey();
}
Инструкция по работе с кодом программы была написана для запуска в Microsoft Visual Studio.
Для начала компиляции кода программы, необходимо нажать на кнопку Start на панели инструментов Microsoft Visual Studio или кнопку F5 на клавиатуре. В случае, если при компиляции не были обнаружены синтаксические или прочие ошибки, код успешно компилируется и выводится программа в окне консоли (черное окно вывода).
Для определения скалярного произведения двух n – мерных векторов, необходимо:
Ввести размерность n, соответственно программа выводит запрос на получение размерности в окне консоли.
В качестве примера взята размерность – 5.
Далее, необходимо ввести координаты вектора . Размерность пространства – 5, следовательно, вектор должен иметь пять координат. После введения каждой координаты, необходимо нажать клавишу Enter на клавиатуре для подтверждения ввода:
Пусть координаты вектора = (2, 2, 2, 2, 2). Тогда ввод имеет вид:
2 Enter,
2 Enter,
2 Enter,
2 Enter,
2 Enter.
Аналогично, для вектора . Пусть координаты вектора = (3, 3, 3, 3, 3).
После введения координат векторов программа производит расчет и выводит сообщение с результатом вычислений, в виде:
"Скалярное произведение векторов (A, B) = 30 ";
Конечеый результат работы программы выглядит в следующим образом:
Рис. 2 Результат работы программы по вычислению скалярного произведения двух векторов.
Задача 2. Проверить выполнение необходимого и достаточного условия компланарности n – мерных векторов ( ( и ( при n = 3, исходя из условия компланарности:
Блок схема имеет следующий вид:
Рис.3. Блок схема для вычисления условия компланарности векторов.
Ниже приводится текст программы с результатами расчетов:
// Основная программа
int det;
int n = 3; // Размерность пространсива определена по условию
int [] A = new int[n];
Console.WriteLine("Введите координаты вектора A");
for (int i = 0; i < A.Length; i++)
{
A[i] = int.Parse(Console.ReadLine());
}
int [] B = new int[n];
Console.WriteLine("Введите координаты вектора B");
for (int j = 0; j < B.Length; j++)
{
B[j] = int.Parse(Console.ReadLine());
}
int [] C = new int[n];
Console.WriteLine("Введите координаты вектора C");
for (int k = 0; k < C.Length; k++)
{
C[k] = int.Parse(Console.ReadLine());
}
det = A[0] * B[1] * C[2] + A[1] * B[2] * C[0] + B[0] * C[1] * A[2] - (A[2] * B[1] * C[0] + A[1] * B[0] * C[2] + A[0] * B[2] * C[1]); // Формула для вычисления определителя 3-го порядка
if (det == 0)
{
Console.WriteLine("Вектора A, B и С компланарны");
}
else
{
Console.WriteLine("Вектора A, B и С не компланарны");
}
Console.ReadKey();
}
Инструкция по работе с кодом программы была написана для запуска в Microsoft Visual Studio.
Для начала компиляции кода программы, необходимо нажать на кнопку Start на панели инструментов Microsoft Visual Studio или кнопку F5 на клавиатуре. В случае, если при компиляции не были обнаружены синтаксические или прочие ошибки, код успешно компилируется и выводится программа в окне консоли (черное окно вывода).
По условию размерность пространства равна трем, т.е. n=3. Для проверки компланарности трех векторов, вводим поочерёдно координаты векторов , и . О чём нас уведомляет программа.
Пусть координаты вектора = (1, 1, 1). Тогда ввод имеет вид:
1 Enter,
1 Enter,
1 Enter.
Аналогично, для векторов и . Пусть координаты вектора = (1, 3, 1), а координаты вектора = (2, 2, 2). После введения координат векторов программа производит расчет и выводит сообщение с результатом вычислений, в виде сообщения с результатом проверки:
"Вектора A, B и С компланарны"
Теперь, пусть координаты вектора = (1, 5, 5). Тогда ввод имеет вид:
1 Enter,
5 Enter,
5 Enter.
Аналогично, для векторов и . Пусть координаты вектора = (1, 3, 1), а координаты вектора = (2, 2, 2). После введения координат векторов программа производит расчет и выводит сообщение с результатом вычислений, в виде сообщения с результатом проверки:
"Вектора A, B и С не компланарны"
Рис. 4 Результат работы программы по определению компланарности трех векторов.
Задача 3. Найти радиус и номер конуса, при котором будет наибольший объем, вычисляемый по формуле: . Здесь n, и - заданы.
Блок схема имеет следующий вид:
Рис.5. Блок схема для вычисления радиуса и номера конуса с наибольшим объемом.
Ниже приводится текст программы с результатами расчетов:
// Начало программы
Console.Write("Введите количество конусов: ");
int n = int.Parse(Console.ReadLine());
double[] R = new double[n];
Console.WriteLine("Введите радиусы конусов:");
for (int i = 0; i < R.Length; i++)
{
R[i] = double.Parse(Console.ReadLine()); // массив радиусов
}
double[] H = new double[n];
Console.WriteLine("Введите, соответствующие радиусам, высоты конусов");
for (int j = 0; j < H.Length; j++)
{
H[j] = double.Parse(Console.ReadLine()); // массив высот
}
Console.WriteLine();
Console.WriteLine("Объемы конусов:");
double[] V = new double[n];
for (int k = 0; k < n; k++)
{
V[k] = (Math.Pow(R[k],3) * H[k] * Math.PI)/3; // вычисление объема
Console.WriteLine(V[k]);
}
double maxvalue = V.Max(); // определение наибольшего элемента
int index_of_max_value = Array.IndexOf(V, maxvalue); // определение индекса
Console.WriteLine("Наибольший объем равен: {0}" , maxvalue);
Console.Write("Искомый радиус: ");
Console.WriteLine(R[index_of_max_value]);
int index = index_of_max_value + 1;
Console.Write("Искомый номер: ");
Console.WriteLine(index);
Console.ReadKey();
}
Инструкция по работе с кодом программы была написана для запуска в Microsoft Visual Studio.
Для начала компиляции кода программы, необходимо нажать на кнопку Start на панели инструментов Microsoft Visual Studio или кнопку F5 на клавиатуре. В случае, если при компиляции не были обнаружены синтаксические или прочие ошибки, код успешно компилируется и выводится программа в окне консоли (черное окно вывода).
Для определения радиуса и номера конуса, при котором будет наибольший объем:
Вводим количество конусов, их радиусы и высоты для вычисления объема. В качестве примера рассмотрим три конуса, т.е. n=3. Далее, необходимо ввести три радиуса и три высоты каждого конуса, о чем оповестит программа:
"Введите радиусы конусов: "
5 Enter;
8 Enter;
6 Enter,
Аналогично, по запросу программы, вводятся высоты:
"Введите, соответствующие радиусам, высоты конусов"
2 Enter;
3 Enter;
4 Enter.
Далее, программа вычисляет объемы и определяет наибольший из них, затем выводит его в окно, а также радиус и искомый номер при этом объеме.
"Наибольший объем равен: 1608,49543863797"
"Искомый радиус: 8"
"Искомый номер: 2 "
Рис. 6 Результат работы программы по определению радиуса и искомого номера конуса, при котором будет наибольший объем.
Задача 4. Найти объем усеченной пирамиды ,
у которой наименьший объем среди усеченных пирамид с площадями оснований при постоянной высоте h . Здесь n , h, – заданы.
Блок схема имеет следующий вид:
Рис.7. Блок схема для вычисления наименьшего объема среди усеченных пирамид.
Ниже приводится текст программы с результатами расчетов:
Console.Write("Введите количество пирамид: ");
int n = int.Parse(Console.ReadLine());
Console.Write("Введите высоту: ");
double h = double.Parse(Console.ReadLine());
Console.WriteLine("Введите меньшие площади оснований:");
double[] p = new double[n];
for (int i = 0; i < p.Length; i++)
{
p[i] = double.Parse(Console.ReadLine());
}
Console.WriteLine();
Console.WriteLine("Введите большие площади оснований: ");
double[] P = new double [n];
for (int j = 0; j < P.Length; j++)
{
P[j] = double.Parse(Console.ReadLine());
}
double[] V = new double[n];
Console.WriteLine("Объемы пирамид:");
for (int k = 0; k < n; k++)
{
if (p[k] >= P[k] | P[k]<=p[k])
{
Console.WriteLine("Ошибка! Площадь меньшего основания всегда меньше площади большего основания усеченной пирамиды.");
}
else if (p[k]
p[k])
{
V[k] = ((p[k] + P[k]) * h) / 3;
Console.WriteLine("{0}\t", V[k]);
}
}
Console.WriteLine();
double minvalue = V.Min();
Console.WriteLine("Наименьший объем: {0}", minvalue);
Console.ReadKey();
}
Инструкция по работе с кодом программы была написана для запуска в Microsoft Visual Studio.
Для начала компиляции кода программы, необходимо нажать на кнопку Start на панели инструментов Microsoft Visual Studio или кнопку F5 на клавиатуре. В случае, если при компиляции не были обнаружены синтаксические или прочие ошибки, код успешно компилируется и выводится программа в окне консоли (черное окно вывода).
Для определение усеченной пирамиды с наименьшим объемом среде остальных пирамид:
Вводим количество усеченных пирамид, пусть оно равняется трем:
"Введите количество пирамид: "
3 Enter.
Далее, вводим общую для всех высоту, пусть она равняется 5:
"Введите высоту: "
5 Enter
Далее вводим меньшие площади оснований:
1 Enter;
2 Enter;
3 Enter.
А затем большие площади оснований:
4 Enter;
5 Enter;
6 Enter.
Далее, программа вычисляет объемы и определяет наименьший из них, затем выводит его в окно консоли.
"Наименьший объем: 8,33333333333333"
В случае, если введенные площади меньших оснований будут больше больших оснований или наоборот, программа выдаст ошибку, следующего вида:
"Ошибка! Площадь меньшего основания всегда меньше площади большего основания усеченной пирамиды."
Рис. 8 Результат работы программы по вычислению наименьшего объема усеченной пирамиды.
Задача 5. Пусть известны длины сторон треугольника a1, a2 и а3 ;
Do'stlaringiz bilan baham: |