Министерство общего и профессионального образования Российской Федерации Тверской государственный технический университет Кафедра электронных вычислительных машин Отчет по лабораторной работе №1 Моделирование динамических систем. Численное интегрирование дифференциальных уравнений. Вариант 1 Принял: Тулупова Т. В. Выполнил: Студент Балахонов С.С. Группа ИВТ 1104 2013г. Цель работы: Знакомство с простейшими численными методами интегрирования обыкновенных дифференциальных уравнений. Содержание работы: 1. Изучение модифицированного метода Эйлера интегрирования дифференциальных уравнений первого порядка и способа достижения требуемой точности получаемого приближенного решения. 2. Составление блок-схемы алгоритма решения поставленной задачи, программы, получение результатов. Постановка задачи: 1. Найти численное решение дифференциального уравнения y' = f(x,y) на заданном отрезке [a,b] при начальном условии у(а) = у0, обеспечив получение результатов на каждом шаге с заданной точностью 0 и беря начальный шаг h0 = (b-a)/10, а =0,01. 2. Значения величин а, b, у0 и вид f(x,y) взять из таблицы. Код программы using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace laba1 { class Program { static double myfunc(double x, double y) { return (2*y*Math.Sqrt(x*x)); } static void Main(string[] args) { double a, b, y0, n, h, x, y1, T, t, k; int i; a = 1; b = 2.73; y0 = 1; n = 100; h = (b - a) / n; x = a; t = a; k = 1; T = 20 - k; string path = @"E:\Func_1.txt"; string path2 = @"E:\Func_2.txt"; if (System.IO.File.Exists(path)) { try { System.IO.File.Delete(path); } catch (System.IO.IOException e) { Console.WriteLine(e.Message); return; } } if (System.IO.File.Exists(path2)) { try { System.IO.File.Delete(path2); } catch (System.IO.IOException e) { Console.WriteLine(e.Message); return; } } using (System.IO.StreamWriter file = new System.IO.StreamWriter(path, true)) { for (i = 0; i <= n; i++) { y1 = y0 + myfunc(x, y0) * h; x = x + h; Console.WriteLine("x= {0:F2} y= {1:F7}", x, y1); file.WriteLine("x= {0:F2} y= {1:F7} ", x, y1); } } Console.WriteLine("\n"); using (System.IO.StreamWriter file = new System.IO.StreamWriter(path2, true)) { for (i = 0; i <= n - 1; i++) { y1 = y0 + t * ((k - y0) / T); y0 = y1; t = t + h; Console.WriteLine("t= {0:F2} y= {1:F7}", t, y1); file.WriteLine("t= {0:F2} y= {1:F7} ", t, y1); } } } } } Результаты выполнения программы График для 2*y* Sqrt(x*x) График переходного процесса для инерционного звена первого порядка с передаточной функцией.
1/--страниц