Моделирование динамических систем
Особенность изучения модифицированного метода Эйлера интегрирования дифференциальных уравнений первого порядка и способа достижения требуемой точности получаемого приближенного решения. Составление блок-схемы алгоритма вычисления поставленной задачи.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 11.02.2016 |
Размер файла | 290,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«Тверской государственный технический университет»
Кафедра электронных вычислительных машин
ЛАБОРАТОРНАЯ РАБОТА
по дисциплине: «Моделирование»
Тема работы: «Моделирование динамических систем. Численное интегрирование дифференциальных уравнений»
Выполнила:
Воронков Р.В.
Проверил: к.т.н.,
Чернышев О.Л.
Тверь 2016
Цель работы
Знакомство с простейшими численными методами интегрирования обыкновенных дифференциальных уравнений.
Содержание работы
Изучить модифицированный метод Эйлера интегрирования дифференциальных уравнений первого порядка и способ достижения требуемой точности получаемого приближенного решения. Составить блок-схему алгоритма решения поставленной задачи, программу, представить полученные результаты.
Вычислить переходную характеристику заданной функции. Составить блок-схему алгоритма решения поставленной задачи, программу, представить полученные результаты.
Вариант задания
№ варианта |
f(x, y) |
а |
b |
y0 |
|
3 |
, |
2,7 |
4 |
4 |
Постановка задачи
Найти численное решение дифференциального уравнения на заданном отрезке при начальном условии . Обеспечить получение результатов на каждом шаге с заданной точностью и беря начальный шаг , а . Значения величин и вид выбраны для варианта №10.
Получить график переходного процесса для инерционного звена первого порядка со следующей передаточной функцией.
,
где параметр - равен значению номера студента в группе (№15), а Т равен разности числа 20 и номера студента в группе (). Таким образом, , а .
Выполнение работы
Пусть требуется найти решение уравнения (1), удовлетворяющее начальному условию .
,
Выберем приращения равные так, чтобы . Далее обозначим , , где
В качестве приближенного решения (1) примем ломанную Эйлера (2).
,
Опишем правило, по которому будем выбирать величину приращения , а также обеспечивать требуемую точность решения на -том «шаге».
В узле возьмем в качестве шага , где - заданное значение. Вычислим в узлеприближенные значения решения и по формуле Эйлера (2), соответственно, используя шаг и .
Если погрешность , то примем в качестве значения в узле величину .
Если погрешность , то повторим вычисления начиная от с уменьшенным вдвое шагом. Последнее действие будем выполнять до тех пор, пока не выполнится условие .
Далее осуществляется расчет следующей точки ломаной Эйлера. Для следующего узла получаем значение , исходя из , а величину шага выбираем на основании ее предыдущего значения:
а) если - предыдущий шаг удваивается;
б) если - предыдущий шаг остается.
Аналогично, получаем решения для остальных узлов.
Для точного выхода в узел на каждом шаге необходимо проверять неравенство и в случае его выполнения положить .
Для представления результатов целесообразно построить график с помощью ЭВМ. Для построения графика необходимо предусмотреть выдачу на печать не более 30 - 50 координат , , автоматически.
После получения решения для заданного уравнения, целесообразно получить график переходного процесса для инерционного звена первого порядка с передаточной функцией:
,
где параметр - равен значению номера студента в группе (№15), а - разности между числом 20 и номером студента в группе (т.е. ). Таким образом, , .
Для выполнения поставленных задач - решение исходного уравнения модифицированным методом Эйлера и получение графика переходного процесса передаточной функции, были реализованы консольные приложения на языке java на платформе NetBeans IDE.
модифицированный интегрирование дифференциальный уравнение
График точностью
Представленная программа записывает выходные данные в файл График переходного процесса для инерционного звена первого порядка с передаточной функцией ; , при .
График переходного процесса
Блок-схема алгоритма решения дифференциального уравнения модифицированным методом Эйлера
Листинг кода программы 1 с комментарием
package equationeyler1;
import java.io.File;
import java.io.IOException;
import jxl.Workbook;
import jxl.write.Number;
import jxl.write.NumberFormat;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class EquationEyler {
private static WritableWorkbook workbook;
private static WritableSheet sheet;
private static float A, B, Y1, Y2, E, H;
private static float X, Y;
private static float H1, H2;
private static int SH = 0;
public static void main(String[] args) throws RowsExceededException,
WriteException, IOException {
createWorkbookSheet();
initializeVariable();
calculationValues();
}
private static void initializeVariable() {
System.out.print("Инициализация входных параметров системы...");
//задаем исходные значения, согласно варианту №10
A = 2,7;
B = 4;
E = (float) 0.01;
H = (B - A) / 10000;
X = A;
Y = (float) 4;
H1 = H;
H2 = H / 2;
System.out.println("Параметры заданы!");
}
private static void calculationValues() throws WriteException, IOException {
while (X <= B && SH < 40) {
SH++;
// находим y' по формуле Эйлера
Y1 = Y + mathFunction(X, Y, H1);
// находим y'' по формуле Эйлера
Y2 = Y + mathFunction(X, Y, H2);
while (Math.abs(Y2 - Y1) >= E) /* Цикл пока b > = e */
{
H1 = H1 / 2;
H2 = H2 / 2;
// повторяем нахождение y' по формуле Эйлера
Y1 = Y + mathFunction(X, Y, H1);
// повторяем нахождение y'' по формуле Эйлера
Y2 = Y + mathFunction(X, Y, H2);
}
addRowValue(SH, X, Y);
// примем в качестве значения y в узле x величину y''
Y = Y2;
if (Math.abs(Y2 - Y1) < E / 4) {
H1 = H1 * 2;
H2 = H2 * 2;
}
X = X + H1; // следующее значение x равно x + h1
}
saveFile();
}
private static float mathFunction(float X, float Y, float H) {
return (float) ((1+Y)/(1-X))*H; //уравнение заданной функции
}
private static void createWorkbookSheet() {
System.out.print("Создание нового файла...");
File excelFile = new File("Laba1");
System.out.println("Файл создан!");
try {
workbook = Workbook.createWorkbook(excelFile);
System.out.print("Создание рабочего листа...");
sheet = workbook.createSheet("export", 0);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(" Рабочий лист создан!");
}
private static void addRowValue(int pos, float X, float Y)
throws WriteException {
//зададим шрифт
WritableFont numberFont = new WritableFont(WritableFont.ARIAL);
//зададим фомат данных
WritableCellFormat numberFormat = new WritableCellFormat(numberFont,
new NumberFormat("#0.00000"));
//зададим столбцы для каждой из осей
sheet.addCell(new Number(0, pos, X, numberFormat));
sheet.addCell(new Number(1, pos, Y, numberFormat));
}
private static void saveFile() throws IOException, WriteException {
System.out.print("Записываем данные на лист, сохраняем файл...");
workbook.write();
workbook.close();
System.out.println(" Готово!");
}
}
Блок-схема алгоритма получения графика переходного процесса для инерционного звена первого порядка с передаточной функцией
Листинг кода программы 2 с комментарием
package TransfFunction;
import java.io.File;
import java.io.IOException;
import jxl.Workbook;
import jxl.write.Number;
import jxl.write.NumberFormat;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
public class TransfFunc1 {
private static WritableWorkbook workbook;
private static WritableSheet sheet;
private static double k,T;
private static int tt, i;
private static double E,h;
public static void main(String[] args) throws RowsExceededException,
WriteException, IOException {
createWorkbookSheet();
initializeVariable();
calculationValues();
}
private static void initializeVariable() {
System.out.print("Инициализация входных параметров системы...");
//задаем исходные значения, согласно варианту №3
k = 15;
T = 5;
t = 20;
System.out.println("Параметры заданы!");
}
private static void calculationValues() throws WriteException, IOException {
for (i = 0; i <= tt; i++) {
E = Math.pow(Math.E, -1 * (i / T));
h = k * (1 - E); //формула передаточной функции
addRowValue(i, i, h);
}
saveFile();
}
private static void createWorkbookSheet() {
System.out.print("Создание нового файла...");
File excelFile = new File("Laba2");
System.out.println("Файл создан!");
try {
workbook = Workbook.createWorkbook(excelFile);
System.out.print("Создание рабочего листа...");
sheet = workbook.createSheet("export", 0);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(" Рабочий лист создан!");
}
private static void addRowValue(int pos, int X, double Y)
throws WriteException {
//зададим шрифт
WritableFont numberFont = new WritableFont(WritableFont.ARIAL);
//зададим формат данных
WritableCellFormat numberFormat = new WritableCellFormat(numberFont,
new NumberFormat("#0.00000"));
//зададим столбцы для каждой из осей
sheet.addCell(new Number(0, pos, X, numberFormat));
sheet.addCell(new Number(1, pos, Y, numberFormat));
}
private static void saveFile() throws IOException, WriteException {
System.out.print("Записываем данные на лист, сохраняем файл...");
workbook.write();
workbook.close();
System.out.println(" Готово!");
}
}
Размещено на Allbest.ru
...Подобные документы
Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.
курсовая работа [580,1 K], добавлен 18.01.2011Принцип и значение метода Эйлера для расчета дифференциальных уравнений. Анализ его геометрического смысла. Улучшение метода за счет аппроксимации производной. Разработка блок-схем и программы на языке Turbo Pascal для проверки методов интегрирования.
курсовая работа [385,7 K], добавлен 15.06.2013Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.
курсовая работа [532,9 K], добавлен 14.01.2014- Исследование движения тела, брошенного под углом к горизонту, с учетом горизонтального сопротивления
Математическая модель задачи для исследования характера движения тела. Решение задачи Коши для системы дифференциальных уравнений первого и второго порядка. Использование метода Эйлера. Схема алгоритма, таблица идентификаторов, программа на языке Pascal.
курсовая работа [137,9 K], добавлен 07.03.2013 Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.
курсовая работа [163,4 K], добавлен 16.05.2016Составление блок-схемы и алгоритма программы для решения уравнения с приближенным значением корня по методу Ньютона, расчета приближенного значения интеграла по формуле трапеций, вычисления уравнения длины вектора. Типы формул общего члена суммы.
курсовая работа [41,3 K], добавлен 15.12.2012Структурно-информационный анализ методов моделирования динамических систем. Математическое моделирование. Численные методы решения систем дифференциальных уравнений. Разработка структуры програмного комплекса для анализа динамики механических систем.
дипломная работа [1,1 M], добавлен 14.05.2010Суть метода Рунге-Кутта и его свойства. Решение дифференциальных уравнений первого порядка. Вычислительный блок Given/Odesolve. Встроенные функции rkfixed, Rkadapt, Bulstoer. Решения линейных алгебраических уравнений в среде MathCad и Microsoft Excel.
курсовая работа [1,1 M], добавлен 02.06.2014Изучение численных методов решения нелинейных уравнений. Построение годографа АФЧХ, графиков АЧХ и ФЧХ с указанием частот. Практическое изучение численных методов интегрирования дифференциальных уравнений высокого порядка, метод Рунге-Кутта 5-го порядка.
курсовая работа [398,3 K], добавлен 16.06.2009Решение систем алгебраических линейных уравнений методом Крамера. Сущность метода прогонки. Программная реализация метода: блок-схема алгоритма, листинг программы. Проверка применимости данного способа решения для конкретной системы линейных уравнений.
курсовая работа [581,0 K], добавлен 15.06.2013Основные этапы математического моделирования. Метод Эйлера как наиболее простой численный метод решения обыкновенных дифференциальных уравнений. Написание компьютерной программы, которая позволит изучать графики системы дифференциальных уравнений.
курсовая работа [1,9 M], добавлен 05.01.2013Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013Рассмотрение двух методов нахождения приближенного корня дифференциального уравнения, применение их на практике. Графическая интерпретация метода Эйлера. Решение задачи усовершенствованным методом Эйлера. Программная реализация, блок-схемы и алгоритм.
курсовая работа [246,8 K], добавлен 17.06.2013Математическое обоснование метода решения задачи: определенный интеграл, квадратурная формула Симпсона (формула парабол). Словесное описание алгоритма и составление его блок-схемы. Выбор языка программирования. Текст программы решения задачи, ее листинг.
курсовая работа [593,6 K], добавлен 09.07.2012Решение дифференциальных уравнений с использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка. Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений. Результат работы программы.
курсовая работа [226,6 K], добавлен 05.04.2013Программа вычисления интеграла методом прямоугольников. Решение задачи Коши для дифференциальных уравнений. Модифицированный метод Эйлера. Методы решения краевой задачи для обыкновенного дифференциального уравнения. Задачи линейного программирования.
методичка [85,2 K], добавлен 18.12.2014Решение дифференциальных уравнений первого порядка. Варианты методов Рунге-Кутта различных порядков. Основные методы численного решения задачи Коши. Повышение точности вычислений и итерационный метод уточнения. Дискретная числовая последовательность.
лабораторная работа [33,3 K], добавлен 14.05.2012Структура языка Паскаль, встроенные процедуры и функции. Составление алгоритма решения уравнения, описывающего работу кривошипно-шатунного механизма, с помошью метода итерации, метода Гаусса и метода Зейделя. Блок-схемы алгоритмов и текст программы.
курсовая работа [64,6 K], добавлен 07.05.2011Понятие определителя матрицы, математические и алгоритмические основы его расчета, функциональные модели, блок-схемы и программная реализация. Сущность метода Гаусса для решения систем линейных алгебраических уравнений и вычисления определителя матрицы.
контрольная работа [455,2 K], добавлен 18.01.2010Математическая постановка задачи. Алгоритм решения системы обыкновенных дифференциальных уравнений методом Эйлера. Параметры программы, ее логическая структура и функциональное назначение. Анализ входных и выходных данных. Описание тестовых задач.
курсовая работа [38,0 K], добавлен 26.04.2011