tipo otchot


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ
УНИВЕРСИТЕТ ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ
Кафедра информационных технологий, моделирования и управления
ОТЧЕТ
по учебной практике
в _____ВГУИТ, каф. ИТМиУ________________________________
(с 12.01.16 – 01.02.16)
Специальность ________прикладная информатика______________
Автор ____________________Струненко И.А_____ группа __У -154_
подпись дата инициалы, фамилия
Руководитель практики
от предприятия Доц. И.Ю. Шурупова в
подпись дата инициалы, фамилия
Руководитель практики
от вуза _Доц. И.Е. Медведкова____
подпись дата инициалы, фамилия
Отчет защищен _________________ __________________
дата оценка
Члены комиссии________________ Доц. Л.А. Коробова (председатель)
подпись, дата инициалы, фамилия
_________________ Доц. С.Н. Черняева
подпись, дата инициалы, фамилия
_________________ Доц. Т.В. Гладких
подпись, дата инициалы, фамилия
Воронеж 2016
ЗАДАНИЕ №1
Условие задачи
Считать из файла целочисленный массив и вывести его на экран, выделяя те его элементы, которые равны максимальному. 
Формат входного файла

center-5715 начало
00 начало

269284781002
center87318 const int n=20
00 const int n=20

269176586360
center68762int M[n]
int M[n]

269246670411
center31539 if stream mass(“array.txt”)
if stream mass(“array.txt”)

center8953500
268478053340 if (int i=0; i>0; i++)
if (int i=0; i>0; i++)

center9842500
center54610mass>>M[i]
mass>>M[i]

center12382500
center81998 if (int i=0; i>0; i++)
if (int i=0; i>0; i++)

center12255500
243840091758output_m(M,n)
поиск миаксимальных элементов и их отметка
00output_m(M,n)
поиск миаксимальных элементов и их отметка

center10001200
317267064135конец
00конец

center21581 начало
00 начало

center264729
3037205285750t max =a [0]
t max =a [0]

center186055
2708275202342 if (int i=0; i>0; i++)
if (int i=0; i>0; i++)

center104165
2595880119380if (a[i]>max)
00if (a[i]>max)

center245644
2950954260982max = a [i]
max = a [i]

center45479
270319558420 if (int i=0; i>0; i++)
if (int i=0; i>0; i++)

center251460
center271145 if (int i=0; i>0; i++)
if (int i=0; i>0; i++)

center172720
-3308367217800-32608074506-890130323100печать элемента
печать элемента
center188595if (a[i]>max)
00if (a[i]>max)

88023210283900267714246025
24923956698200240004415844800center35560
148526538100печатаем помеченный элемент
печатаем помеченный элемент

center83820
2703830100330 if (int i=0; i>0; i++)
if (int i=0; i>0; i++)

center5715
center11430конец
00конец

38087301076325
Код программы
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
template <typename t>
void output_m(t a[], t n)
{
t max = a[0];
for (t i = 0; i < n; i++)
{
if (a[i]>max)
max = a[i];
}
for (t i = 0; i < n; i++)
{
if (a[i] == max)
cout << a[i] << "<-" << endl;
elsecout << a[i] << endl;
}
}
void main()
{
const int n = 20;
int M[n];
ifstream mass("D:\\array.txt");
for (int i = 0; i < n; i++)
{
mass >> M[i];
}
output_m(M, n);
_getch();
}
Результат прогона программы
ЗАДАНИЕ №2
Найти одно собственное значение и соответствующий ему собственный вектор матрицы
А=20-2031-133Решение нелинейного уравнения найти комбинированным методом с точностью ɛ по функции и по аргументу.
Решение
Выпишем характеристическое уравнение матрицы А.
















3
1
3
0
2
3
3
2
3
)
2
(
3
3
1
2
3
0
2
0
2






















3
1
3
0
2
3
3
2
3
)
2
(
3
3
1
2
3
0
2
0
2








= 6-16λ+8λ2-λ3В табличном процессоре Microsoft Excel построим график функции
fλ=6-16λ+8λ2-λ3, для того чтобы отделить корни.

Данный многочлен 3-й степени имеет 3 вещественных корня на отрезках: [0;1], [2;2,5] и [5;5,5]
Построим алгоритм уточнения корня нелинейного уравнения с помощью метода секущих. Будем использовать следующие обозначения переменных:
a,b– левый и правый конец отрезка;
– заданная точность;
k – количество итераций.
f’(x)= -3x2+16x-16
f’’(x)= -6x+16
-3x2+16x-16=0
D=b2-4ac= 256-4*(-3)*(-16) = 64
x1=-b+D2a=-16-8-6=4
x2=-b+D2a=-16+8-6≈1,33
2619375929005000247777095211901
001
x3=166≈2,67
4940300-67945F’(x)
00F’(x)
31692852095500032797751193800020167601187450055880016383000
1906270336550043262553365500131127533655003923030336550026854153365500
2686054572000
58420016002000694690698500019062701600200020167606985000
4326255298450031889702984500494030075565F’’(x)
00F’’(x)

372173553340X3
00X3
249618553340X2
00X2
112014053340X1
00X1

Как мы видим из рисунка, чтобы сохранялся знак, отрезок должен лежать в интервале [1,33;2,67]. Следовательно, возьмем отрезок [2;2,5]
1815465132715a, b, eps
00a, b, eps

249618512446000
196977085090K=0
00K=0

24961851524000
1310640156210if ((b - a < 1) || (f(a) * df2(a) < 0))
00if ((b - a < 1) || (f(a) * df2(a) < 0))

363093010668000
354139512700039230302540Ошибка при вводе данных00Ошибка при вводе данных39230301328420x1 = a
00x1 = a

36499809779000
44265851841500
247396013398500
40239953048000
131064093980If(f1(a)*f2(a)>0
00If(f1(a)*f2(a)>0
363093012573000
35413952095500
363728015557500
44265859271000
24663407429500
2467610190500
196977034925x1 = b
00x1 = b

24663401587500
738506565150077724112064001971040151765h/= 2
00h/= 2

33108904616451
001
2414905156845005594356038852
002

3340735-3746501
001
5572784225000520966-3223582
002
2451693-624600
130954280237if (x1 == a)
00if (x1 == a)
372173543180003632200113665003923030301625x2 = x1 + h
00x2 = x1 + h
363093045466000
44043609906000
246761015684500
24663403937000
1311275117475if (x1 == b)
00if (x1 == b)
36322001174750037217354699000
3923030132080x2 = x1 - h
00x2 = x1 - h

443420529845000363093011112500
351828912991900
24431221163200
2378855161387f(x2) * f(x1)<0
00f(x2) * f(x1)<0

54909410471400
35699206217300
43373861661f(x2)>eps || abs (x2-x1)>eps
00f(x2)>eps || abs (x2-x1)>eps

14500865302001470896707100
25010069553000
178828115005k++;
x0 = x1;
x1 = x2;
x2 = (x1 - f(x1)*(x0 - x1) /(f(x0) - f(x1)))
00k++;
x0 = x1;
x1 = x2;
x2 = (x1 - f(x1)*(x0 - x1) /(f(x0) - f(x1)))

1415038430200
356998615197900
178435095217x2
f(x2)
k
00x2
f(x2)
k

Код программы
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
float f (float x)
{
float y = -(x*x*x) + (8*(x*x)) - (16*x) + 6;
return y;
}
float f1 (float x)
{
float y = (-3 * (x*x)) - 16 * x - 6;
return y;
}
float f2 (float x)
{
float y = -6 * x + 16;
return y;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale (0, "Rus");
float a, b, eps, x1, x2, x0, h=0.2;
int k = 0;
cout << "Введите a, b, eps\n";
cin >> a >> b >> eps;
if ((b - a < 1) || (f1(a) * f2(a) < 0))
{
cout << "Ошибка при вводе данных\n";
system ("pause");
return 0;
}
else if (f1(a) * f2(a) > 0) x1 = a;
else x1 = b;
cout << "Первое приближение = " << setw(5) << x1 << endl;
do{
h/= 2;
if (x1 == a) x2 = x1 + h;
if (x1 == b) x2 = x1 - h;
}
while (f(x2) * f(x1) < 0);
cout << x2 << endl;
cout << h << endl;
while (f(x2)>eps || abs (x2-x1)>eps)
{
k++;
x0 = x1;
x1 = x2;
x2 = (x1 - f(x1)*(x0 - x1) /(f(x0) - f(x1)));
}
cout << "x = " << x2 << endl << "f(x) = " << f(x2) << endl;
cout << "k=" << k << endl;
system ("pause");
return 0;
}
Прогон программы
Исходные данные:
A = 2
B = 2,5Eps = 0.0001
Результат работы программы:
X = 2.4280
F(x) = 0
K = 4
Нахождение собственных векторов
Определим собственный вектор, отвечающий собственному значению λ<2.4280 . Для этого решим систему линейных уравнений
2-2.42800-103-2.42802-111-2.4280*x1x2x3≈000Расписав эту систему
-0.428x1-х3≈00.572x2+2x3≈0-x1+x2-1.428x3≈0и проведя преобразования, получим
x1=-4.6728x2=-1.7483x3=1Таким образом, собственными векторами, соответствующими собственному значению λ<2.4280, является множество векторов, коллинеарных вектору x=-4.6728-1.74831

Приложенные файлы

  • docx 18047984
    Размер файла: 287 kB Загрузок: 0

Добавить комментарий