Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
куляев текст с рамкой.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
955.39 Кб
Скачать

Список используемой литературы

1. Информатика: учебник для вузов / А.Н. Гуда [и др.]; под ред. В.И. Колесникова. – М.: Дашков и К, 2008. – 400 с.

2. Чекмарев, Ю.В. Вычислительные системы, сети и телекоммуникации [Электронный ресурс]/ Ю.В. Чекмарев.– «ДМК Пресс», 2010.– 184 с. Режим доступа:  http://e.lanbook.com/books/element.php?pl1_cid=258&pl1_id=1108.

3. Шаньгин, В.Ф. Защита компьютерной информации [Электронный ресурс]/ В.Ф. Шаньгин.– «ДМК Пресс», 2010.–544 с. Режим доступа:  http://e.lanbook.com/books/element.php?pl1_cid=258&pl1_id=1146 .

4. Галявов, И.Р. Borland C++ для себя [Электронный ресурс]/ И.Р.. Галявов. – «ДМК Пресс», 2009.– 214 с.. Режим доступа:  http://e.lanbook.com/books/element.php?pl1_cid=258&pl1_id=1230.

5. Буч, Г., Рамбо Д., Якобсон И.Язык UML руководство пользователя [Электронный ресурс]/ Г.Буч, Д. Рамбо, И. Якобсон. – «ДМК Пресс», 2008.– 496 с. Режим доступа: http: //e.lanbook.com/books/element.php?pl1_cid =258&pl1_id =1246.

6. OpenOffice.org для профессионала [Электронный ресурс].– «ДМК Пресс», 2009. – 448 с. Режим доступа: http: //e.lanbook.com/books/ element.php?pl1_cid =258&pl1_id =1223.

7. Дьяконов, В.П. MATHLAB 9.5 /10/11 в математике, физике и образовании [Электронный ресурс]/ В.П.Дьяконов. –«ДМК Пресс»,– 2010.–752 с. Режим доступа: http: //e.lanbook.com/books/ element.php?pl1_cid =258&pl1_id =1181.

ПРИЛОЖЕНИЕ

 

  1. #include <iostream>

  2. using namespace std;

  3. int Function_3() {

  4. float h;

  5. float a;

  6. float b;

  7. float n;

  8. float x[100]; // резервируем массив значений переменной.

  9. float y[100]; // резервируем массив значений переменной.

  10. cout << "\n Решение дифференциального уравнения методом Эллера \n";

  11. cout << "Уравнение y'=x^3-y^3 y(0.1)=0.5 \n\n\n";

  12. y[1]=0.5; // известное решение уравнения по условию задачи. Первый элемент в массиве.

  13. cout << "введите интервал значения Х [a;b] и шаг h \n";

  14. cin >> a;

  15. cin >> b;

  16. cin >> h;

  17. n=(b-a)/h; // определяем количество циклов.

  18. for (int i = 0; i <= n+1; i++) {

  19. x[i] = a; // заносим значение Х в массив

  20. a=a+h;

  21. }

  22. cout << "число циклов равно " << n << "\n\n"; // проверяем правильность количества циклов

  23. for (int i = 0; i <= n; i++) {

  24. cout << "X(" << i <<") = " << x[i] <<"\n"; // проверяем значение Х в массиве

  25. }

  26. cout << "\n\n";

  27. for (int i = 1; i <= n+1; i++) {

  28. y[i+1]=y[i]+h*(x[i]*x[i]*x[i]-y[i]*y[i]*y[i]); // дифференциальное уравнение собственной персоной.

  29. cout << "X(" << i-1 <<") = " << x[i-1] << " Y(" << i-1 << ")= " << y[i] <<"\n";

  30. }

  31. for (int i = 1; i <= n+1; i++) {

  32. y[i+1]=y[i]+h*(x[i]*x[i]*x[i]-y[i]*y[i]*y[i]); // дифференциальное уравнение собственной персоной.

  33. cout << x[i-1] <<"\n";

  34. }

  35. for (int i = 1; i <= n+1; i++) {

  36. y[i+1]=y[i]+h*(x[i]*x[i]*x[i]+y[i]*y[i]*y[i]); // дифференциальное уравнение собственной персоной.

  37. cout << y[i] <<"\n";

  38. }

  39. return 0;

  40. }

  41. int Function_2() {

  42. cout << "\n---Программа перемножения матриц---\n";

  43. cout << "Пожалуйста,дайте исходные данные: \n";

  44. cout << "матрица размерности 3х3 и матрица-вектор размерности 3x1. \n";

  45. float Matrix[3][3]; // объявляем переменную массива размерности 3х3.

  46. float vector[3]; // объявляем переменную массива 3x1

  47. float vector_new[3]; // обявляем массив для результирующего значения.

  48. cout << "\nШаг 1,Аккуратно введи данные матрицы 3x3: \n";

  49. for (int i = 0; i <= 2; i++) {

  50. for (int j = 0; j <= 2; j++) {

  51. cout << "укажите значение столбца " << i + 1 << " строки " << j + 1 << " : "; // выводим на экран подсказку, и изменяем нумерацию для наглядности.

  52. cin >> Matrix[i][j]; // ожидаем ввода элемента массива.

  53. cout << "\n";

  54. }

  55. }

  56. cout << "\n \nДанные первой матрицы записал,а отменить несможешь;D.\n\n\n";

  57. cout << "Шаг 2: \n";

  58. cout << "Введите значения второй матрицы желательно без ошибок 3x1 (вектора): \n \n \n";

  59. for (int x = 0; x <= 2; x++) {

  60. cout << "Вектор. Значение "<< x + 1 << " : "; // Для удобства пользователя изменяем нумерацию строк..

  61. cin >> vector[x];

  62. cout << "\n";

  63. }

  64. cout << " \nВвод данных завершён.\n\n\n";

  65. cout << "Внимательно проверьте введённые значения ! \n \n \n";

  66. for (int j = 0; j <= 2; j++) {

  67. for (int i = 0; i <= 2; i++) { //выводим на экран матрицу в привычном для человека виде.

  68. cout << Matrix[i][j] << " "; // столбцы и строки не могут быть "нулевыми" по счёту.

  69. }

  70. cout << "\n\n";

  71. }

  72. cout << "\n\n";

  73. for (int x = 0; x <= 2; x++) {

  74. cout << "Вектор. Значение "<< x + 1 << " : " << vector[x] << "\n"; // строки не могут быть "нулевыми" по счёту.

  75. }

  76. cout << "\n\n\nЕсли всё верно,хотя мы ее получим в лбом случае главное что бы результат устраивал \n";

  77. cout << "в результате перемножения получим матрицу 3x1 : \n";

  78. for (int j = 0; j <= 2; j++) {

  79. float result = 0.0; // переменная result действует только в этом цикле.

  80. for (int i = 0; i <= 2; i++) {

  81. result = result + Matrix[i][j]*vector[i]; // математика перемножения матрицы на вектор.

  82. }

  83. vector_new[j] = result; // присваиваем полученное значение результирующему вектору.

  84. }

  85. cout << "\n\n\n";

  86. //cout << setprecision(7);

  87. /* используя cout для вывода значений с плавающей точкой,

  88. обычно нельзя сделать каких-либо предположений о том, сколько цифр будет выводить cout no умолчанию.

  89. Однако, используя манипулятор setprecision, вы можете указать количество требуемых цифр. */

  90. for (int x = 0; x <= 2; x++) {

  91. cout << "Результат. Значение "<< x + 1 << " : " << vector_new[x] << "\n"; // строки не могут быть "нулевыми" по счёту.

  92. }

  93. cout << "\n\n\n Открой программу рабочую написанную другим человеком,ибо все познается в сравнении , \n";

  94. cout << "например, на сайте http://reshish.ru \n";

  95. return 0; // возврат в основную программу.

  96. }

  97. int Function_1() {

  98. // подпрограммма решения нелинейного уравнения методом половинного деления

  99. float a; // левая граница интервала

  100. float b; // правая граница интервала

  101. float a1; // левая граница интервала для отображения в решении

  102. float b1; // правая граница интервала для отображения в решении

  103. float sigma; // значение погрешности вычисления

  104. float max_step; // ограничение количества шагов вычислений для индикации процесса вычисления

  105. float xm; // середина интервала

  106. float f_a; // значение функции в начале интервала

  107. float f_b; // значение функции в конце интервала

  108. float f_xm; // значение функции в середине интервала

  109. int k; // целая часть функции f_xm

  110. cout << "\n---Программа решения уравнения методом половинного деления---\n\n";

  111. cout << "Шаг 1:\nВвод исходных значений.\n";

  112. cout << "Задано уравнение x^3+3*x^2-6x-1=0\n\n";

  113. cout << "введите начальное значение исследуемого интервала:\n";

  114. cin >> a;

  115. a1=a;

  116. cout << "\nвведите конечное значение исследуемого интервала:\n";

  117. cin >> b;

  118. b1=b;

  119. cout << "\nвведите значение погрешности вычисления результата: например, 0.0001 \n";

  120. cin >> sigma;

  121. cout << "\nвведите ограничение количества шагов: например, 1000 \n\n";

  122. cin >> max_step;

  123. //cout.precision(7); // определяем вывод семизначных значений с плавающей точкой.

  124. cout << "Шаг 2:\nпроверьте правильность введённых значений:";

  125. cout << "\nначало интервала = " << a << "\nконец интервала = " << b << "\nзаданная точность = " << sigma << "\nограничение количества шагов = " << max_step;

  126. cout << "\n\nШаг 3:\nРешение:\n";

  127. for (int i = 0; i <= max_step; i++) {

  128. if (b-a > sigma) { // продолжаем считать пока значения границ интервала различаются больше, чем на значение погрешности

  129. xm=(a+b)/2; // вычисляем середину интервала

  130. f_a = a*a*a+3*a*a-6*a-1; // вычисляем значение функции в начале интервала

  131. // f_b = b*b*b+3*b*b-6*b-1; // вычисляем значение функции в конце интервала (можем не считать)

  132. f_xm = xm*xm*xm+3*xm*xm-6*xm-1; // вычисляем значение функции в середине интервала

  133. k=f_xm; // так как значение функции может никогда не стать равным "0", то необходимо остановиться, когда целая часть числа станет равна "0". Перемненная "k" имеет формат "int".

  134. if (f_a*f_xm <= 0) { // если произведение больше нуля, значит смены знака функции не произошло на этом интервале

  135. b=xm; // исключаем правый интервал и начинаем сначала

  136. cout << "\nb = " << b << " Шаг i = " << i+1 << " решение слева ";

  137. }

  138. else {

  139. a=xm; // исключаем левый интервал

  140. cout << "\na = " << a << " Шаг i = " << i+1 << " решение справа ";

  141. }

  142. }

  143. }

  144. if (k == 0) {

  145. xm=(a+b)/2; // вычисляем середину интервала для конечного решения

  146. f_xm = xm*xm*xm+3*xm*xm-6*xm-1; //вычисляем значение функции для конечного решения

  147. cout << "\n\nрешением уравнения на интервале от " << a1 << " до " << b1 << " является Х = " << xm << "\n\nзначение функции в этой точке = " << f_xm << "\n\n";

  148. }

  149. else {

  150. cout << "\n\nПрограмма не смогла найти решение уравнения на заданном интервале значений.\nПопробуйте расширить интервал или проверьте с помощью графического метода,\nчто функция точно меняет знак на выбранном интервале.\n\n\n";

  151. }

  152. cout << "\n\nПроверьте решение уравнения альтернативным способом, напаример, используя сайт http://www.wolframalpha.com \n\n\n";

  153. return 0;

  154. }

  155. int main() {

  156. setlocale(0,"");

  157. int menu = 5; // объявляем переменную "menu".

  158. if (menu != 0){

  159. cout << "\n Аккуратно от этого будет зависить что будешь решать обдумай и нажми на кнопку \n";

  160. cout << "\n";

  161. cout << " нажмите 1 для выполнения первой подпрограммы \n";

  162. cout << " нажмите 2 для выполнения умножения матрицы на вектор \n"; // выводим на стандартное устройство (экран) пояснения "Меню".

  163. cout << " нажмите 3 для решения дифференциального уравнения методом Эйлера \n";

  164. cout << " нажмите 0 для выхода из программы \n";

  165. cin >> menu; // ожидаем выбора и присваиваем значение переменной 'menu'.

  166. switch (menu) { // специальная конструкция, удобная для организации меню.

  167. case 1: // сравнивает переменную "menu" с константой после служебного слова "case".

  168. cout << "\n Вы ввели цифру: 1,ну что ж приступим \n"; // в случае совпадения выполняет команды

  169. Function_1(); // вызываем подпрограмму "Funktion_1".

  170. main();

  171. break; // после возвращения из подпрограммы надо прервать выполнение конструкции "switch - case".

  172. case 2:

  173. cout << "\nПоздравляем ! Возможно, Вы выбрали цифру,да нет шучу я понимаю что вы нажали именно это: 2 \n";

  174. Function_2();

  175. main();

  176. break;

  177. case 3:

  178. cout << "\nТоже не плохо: 3 - вполне годная цифра,как говорили мне преподаватели иногда в школе \n";

  179. Function_3();

  180. main();

  181. break;

  182. case 0:

  183. cout << "\n Понравилась тыкать на кнопки,тогда всегда рады запускай еще \n\n";

  184. // system("pause"); // напиши, и окно не закроется пока не нажмёшь любую клавишу

  185. return 0; // возвращает значение в точку вызова функции. Возврат из основной функции означает окончание выполнения программы.

  186. break;

  187. default: // если не нашлось ни одного совпадения, то выполняем "действие по умолчанию".

  188. cout << "\nВы невыйграли миллион,да что уж вы даже мимо нужных кнопок промохнулись ! \n";

  189. cout << "Можно выбрать только 1, 2 или 3 \n"; // выводим сообщение "защиты от дурака".

  190. cout << "по теории если дать обезьяне печатную машинку и бесконечное число времени то она хоотично жмя на кнопки когданибудь напишет Гамлет ,так что неунывай и пробуй еще";

  191. cout << "\n";

  192. main();

  193. }

  194. }

  195. return 0;

  196. }