Презентация по имитационному моделированию на тему Эффективные алгоритмы численного решения алгебраических уравнений, расчета производных, решение систем линейных алгебраических и дифференциальных уравнений в Scilab.
Эффективные алгоритмы численного решенияалгебраических уравнений, расчета производных, решениесистем линейных алгебраических и дифференциальныхуравнений в Scilab.Выполнил : студент группы МДМ-115Физико-математического факультета Ерина Оксана Проверила : Кормилицына Т.В.
ScilabScilab (/ˈsaɪlæb/) — пакет прикладных математических программ, предоставляющий открытое окружение для инженерных (технических) и научных расчётов. Это самая полная общедоступная альтернатива MATLAB.
Возможности Система позволяет :решать задачи линейной алгебры;решать нелинейные уравнения и системы;решать задачи оптимизации;дифференцировать и интегрировать;решать обыкновенные дифференциальные уравнения и системы.обрабатывать экспериментальные данные (интерполяция и аппроксимация, метод наименьших квадратов);создавать различные виды графиков и поверхностей.
Решение алгебраических уравнений Любое уравнение P (x) = 0, где P (x) это многочлен, отличный от нулевого, называется алгебраическим уравнением или полиномом. Решение алгебраического уравнения в Scilab состоит из двух этапов. Необходимо задать полином P (x) с помощью функции poly, а затем найти его корни, применив функцию roots.Итак, определение полиномов в Scilab осуществляет функция poly(a, "x ["fl"]),a-это число или матрица чисел, x-символьная переменная, fl-необязательная символьная переменная, определяющая способ задания полинома.
Пример решения алгебраических уравнений пример отражает создание полинома p, имеющего в качестве корня тройку, и полинома f с коэффициентом 3. -->p=poly(3,’x’,’r’); -->f=poly(3,’x’,’c’); -->p p = - 3 + x -->f f = 3
Расчет производных В Scilab можно вычислять производную функции в заданной точке. Вычисление происходит при помощи команды numdiff(f,x0), гдеf — имя дифференцируемой функции переменнойх,x0 — координата точки в которой необходимо вычислить производную.
Пример нахождения производнойРассмотрим пример применения команды numdiff. Вычислим производную функцииf x = 16 𝑥2-5x+8 в точке x0=4 -->functionl=f(x),l=16/(sqrt(x^2-5*x+8))endfunctionПосле чего, воспользовавшись командой numdiff, вычислить производную функции в точкеx0=4 -->numdiff(f,4)ans =-3.0000001
СЛАУ Система m уравнений с n неизвестными вида: a11x1 + a12x2 + · · · + a1nxn = b1 ,a21x1 + a22x2 + · · · + a2nxn = b2,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .am1x1 + am2x2 + · · · + amnxn = bmназывается системой линейных алгебраических уравнений (СЛАУ), причем xj — неизвестные, aij — коэффициенты при неизвестных, bi — свободные коэффициенты (i = 1 ... m, j = 1 ... n). Система из m линейных уравнений с n неизвестными может быть описана при помощи матриц: A · x = b, где x — вектор неизвестных, A — матрица коэффициентов при неизвестных или матрица системы, b — вектор свободных членов системы или вектор правых частей. Совокупность всех решений системы (x1,x2,... ,xn) называется множеством решений или просто решением системы
Пример решение СЛАУРешить систему линейных уравнений методом Гаусса: 2x1 − x2 + 5x3 = 0 , 3x1 + 2x2 − 5x3 = 1 , x1 + x2 − 2x3 = 4 .
Диффиренциальные уравнения Дифференциальным уравнением n-го порядка называется соотношение вида H(t,x,x′ ,x′′,...,x(n) ) = 0 Решением дифференциального уравнения является функция x(t), которая обращает уравнение в тождество. Системой дифференциальных уравнений n-го порядка называется система вида: x ′ 1 = f1(t,x1,x2,... ,xn)x ′ 2 = f2(t,x1,x2,... ,xn)· · ·x ′ n = fn(t,x1,x2,... ,xn) Решение системы — вектор, который обращает уравнения системы в тождества:x(t) = x1(t) x2(t) . . . xn(t)Дифференциальные уравнения и системы имеют бесконечное множество решений, которые отличаются друг от друга константами. Для однозначного определения решения требуется задать дополнительные начальные или граничные условия. Количество таких условий должно совпадать с порядком дифференциального уравнения или системы
Пример Решить задачу Коши x ′ = cos(xy), y ′ = sin(x + ty), x(0) = 0, y(0) = 0. на интервале [0; 10]. //Функция, описывающая систему дифференциальных уравнений Function dy=syst(t,y) dy=zeros(2,1); dy(1)=cos(y(1)*y(2)); dy(2)=sin(y(1)+y(2)*t); endfunction //Решение системы дифференциальных уравнений x0=[0;0];t0=0;t=0:*0.1*:10;y=ode(x0,t0,t,syst); //Формирование графического решения plot(t,y)
Вывод На основе анализа теории и примеров можно сделать вывод, что Scilab становится не просто «вычислялкой» отдельных небольших примеров, а настоящей «средой программирования с математическим уклоном», позволяющей создавать свои собственные математические «типы данных» — числовые системы, функционалы — и полноценные программные модули, которые могут использовать весь встроенный (или также собственноручно достроенный) функционал Scilab.