Лабораторная работа №1 Вычисление функций на отрезке(табуляция) и построение графиков в среде MATLAB и MATHCAD Цель : Приобретение практических навыков табуляции функций и построения графиков Табуляция, т.е. вычисление значений функций в точках и визуализация т.е. представление в виде графиков и диаграмм является важной составной частью компьютерной математики. В частности визуализация необходима для решения уравнений и неравенств, систем уравнений и задач на экстремум. 1. MATLAB Для построения графика одномерной функции используется функция plot(x,y,s), где s –вектор параметров который определяет цвет графика, тип точек, тип линий. В частности - красный, ‘y’-желтый Например: Plot(x,y, ‘r’) Функция plot позволяет строить несколько графиков в одной плоскости. В этом случае формат следующий: Plot(x,y1,s1,x,y2,s2……) Рассмотрим табуляцию одномерной функции. Как известно интервал в MATLABе задается следующим образом а:h:b >> x=-5:0.2:5; >> y=x.^2; >>Z=[x;y]’ >> plot(x,y) 1 Рассмотрим трехмерную графику в MATLABе. Для создания 3-х мерного графика функции z=f(x,y), необходимо иметь матрицу значений функции z в точках x и у. Это можно сделать с помощью специальной функции MATLABа [X,Y]=Meshgrid(x,y) [X,Y]=Meshgrid(1:0.2:1.6,12:0.5:14) После того как матрица значений функции будет сформирована можно выполнить построение графика с помощью функции plot3(x,y,z,s), где S – вектор параметров задающий формат графика. Пример. Рассмотрим конкретный пример z=x2+y2, x=[-4,4] с шагом 0.1 и y=[4,4] с шагом 0.1 >>[x,y]=meshgrid(-4:0.1:4,-4:0.1:4); >>z=x^2+y^2; >>>>plot3(y,x,z) 2 2.MATHCAD. Рассмотрим построение 2-D графика x:=0,0.5..10 f(x)=x2+sin(x) Для табуляции достаточно выполнить x= y= Появится таблица значений Для построения графика на линейке графиков выбрать шаблон 2-D графика и проставить вдоль осей имена аргумента и функции x и y 3 2 x 0 0.5 10 f ( x) x sin ( x) f ( x) x 0 0 0.729 0.5 1.841 1 3.247 1.5 4.909 2 6.848 2.5 9.141 3 11.899 3.5 15.243 4 19.272 4.5 24.041 5 29.544 5.5 35.721 6 42.465 6.5 49.657 7 57.188 7.5 100 f ( x) 50 0 0 5 10 x Рассмотрим построение 3-D графика Предварительно должна быть выполнена табуляция функции, для этого можно использовать специальную функцию Createmesh Пример. f(x,y)=sin(x2+y2) M=createmesh(f,-1.5,1.5,-1.5,1.5), после чего аналогично активизировать шаблон 3-D графика и проставить в нужном месте M. rer 4 2 f ( x y ) sin x y 2 M CreateMesh ( f 1.5 1.5 1.5 1.5) M Задания для индивидуального выполнения 1. Выполнить табуляцию и построить график ( Matlab, MathcaD) согласно порядкового номера. Отрезок f(x) 1. 2. 3. [0,6] [1,4] 4-хx2+ [1,4] -16 4. [-3, 3] -1 5. 2 -x-0.5 [0,4] 6. [-1,5] 7. 8. [1,9] [0,3] 9. [-3, 3] 10. [2,4] 11. [-1,2] 5 12. [-1,6] 13. [l,4] 14. [-1,7] 15. [1,5] 16. [-4,2] 17. [-4,-1] 18. [-2, 4] 19 y 22 23 24 y [1, 10] x2 4 3 x ex 3 2 sin x cos x 2 cos x 2 tgx 4 x 2 x sin x y ln tgx cos 2 x y x 2 5x 6 3 [2, 20] x ln 3 x 3 y [2, 12] x 3 ln x 2 y 20 21 x 2 x cos x 3 x 3 tgx 2 x cos x 2 [0, 15] [1, 20] [0, 15] 2 x 2 5x 6 y tg cos 3 x tgx 2 3 25 [0, 10] 2. Выбрать произвольную 3- D функцию и построить ее график Лабораторная работа №2 6 Решение уравнений и систем уравнений в графиков в среде MATLAB и MATHCAD Цель Приобретение практических навыков решения уравнений и систем уравнений Все уравнения можно разбить на алгебраические, т.е. вида an X n an1 X n1 ... a0 0 . и трансендентные или неалгебраические. 1.MATLAB Для решения алгебраических уравнений в MATLAB имеется специальная функция roots. Аргументами являются коэффициенты уравнения Пример. Решить уравнение 2x5-3x4+5x3+x2+7x+3=0 >>y=roots([2-3 5 1 7 3]); y=1.2+1.4i 1.2-1.4i -0.27+1.01i -0.27-1.01i -0.394 2. MATHCAD Используется функция polyroots. Аргументами является массив полинома. Сформируем в МathCade вектор коэффициентов в обратном порядке 7 a 3 7 1 5 3 2 y polyroots ( a) y 0.394 0.272 1.01i 0.272 1.01i 1.219 1.411i 1.219 1.411i Поэтому для решения трансцендентных уравнений применятся двухэтапная процедура. На 1-ом этапе строится график функции f (x) и определяется наличие решений и если они есть интервал их изоляции. Решения трансцендентных уравнений в MatLabe Для решения в MatLabe имеются 2 – функции Solve () Fzero () Solve (´f(x)´, x) х- неизвестное f(x) – уравнение 1) sin x+ x-1=0 >>Y=solve (´sin(x)+x-1=0´, x) Y=0,51 Функция solve в ряде случаев позволяет определит все корни уравняется без указания 2) 2x-4x+3=0 Y=solve (´2.x-4x+3=0´) 8 Y=1.478 3.413 Найдены оба корня. Функция solve позволяет i-комплексное решение 3) sinx+lnx+ex-1=0 >> Y=solve (´sin(x)+log(x)+exp(x)-1=9 Y=3.055-1.71i Вместе с тем функция solve не обнаружила и не выдала корень х=0.407 Достоинством функции solve является то, что она позволяет решения уравнения задач в аналитическом виде. Дано уравнение: 2x-3(a-b)=0 Y=solve (´2. x-3(a-b)=0´) Y=log((3-3b)/log(2)) Недостатком функции solve, что она не требует информации о настоящим значение корня или интервала изоляция. Поэтому во многих случаях она не заходит всех корней. В следующим таблице прив. число реальных корней и корень, найден: solve. x2+4ּsinx-2=0 кол-во корней x 2 0.463 2sin (lnx)=0 6 1 ln(4-2x)+x2-2=0 3 1.27 Имеет несколько форматов записи fzero (´f(x) ´, x) fzero (´f(x) ´, [x1,x2]) fzero (´f(x) ´, x, tol, trace) fzero (´f(x) ´, [x1, x2], tol) Здесь f(x) –уравнение х- нач. приближение [x1, x2]- обл. изоляции корня tol – заданная погрешность TRACE – значение корня на каждой итерации: Пример 1. 2x-4x+xsinx=0 Известно, х находится в р-не точки х=1 9 >> Y=fzero (´2^x-4x+xsin(x)´, 1) У=0.34 Пример: ln(4-2x)+x2-2=0 Известно также, что корни находятся на интервале изоляции [1, 1.5] >> Y=fzero (´log(4-2x)+x^2-2´, [1, 1.5]) У=1,27 Для определения всех веществ корней, необходимо выполнить функции frezo всех интервалов изоляции. Пример 3. Решить уравнение. ln (4-2x)+x2-2=0 с точностью 0.0001. На интервале [1; 1,5] У=fzero (log(4-2x)+x^2-2, [1,1,5]0.0001) |f(x)| =0.0001 Y=1.2784 x=0.402 Решить указанные уравнение, с выдачей информации о каждой итерации. Число итераций < 50 >>Y=fzero(log(4-2 x)+x^2-2, [0, -1.8], 50) y= N x f(x) 1 0 -0.61 2 -1 0.79 5 -0.59 -0.0006 Таким образом функция fzero позволяет определит все вещ. корни уравнения, но fsero не вып. комплекс и корни. Таким образом, стратегия решения трансцендентных уравнений в MatLabe следующая: 1. С помощью графиков определит интервалы изоляции корней. 2. С помощью вычисл. Все имеющиеся веществ. корни. 3. С помощью функции fsolve определить комплексные решение трансцендентных уравнений в MatCad. В MathCade имеется функция Root и 2 формата функции Root. Root (f(x), x) 10 Root (f(x), x, a, b) Где f(x) –левая часть уравнения f(x)=0 х-нач. приближение a, b – интервал изоляции. Рассмотрим пример: Решить уравнение e x/5-2(x-1)2=0 1. Построить график для определения интервала изоляции. 2 -2 -1 1 2 3 4 5 6 Функция имеет 3 интервала изоляции: [0, 1], [1,2], [5,6] f (x) ex 2 ( x 1) 2 5 Root (f(x), x, 0, 1) = 0.578 Root (f(x), x, 1, 2)= 1.76 Root (f(x), x, 5, 6) Функция Root может определить и комплексные решения. F(x)=x2+1 x=0.5 Root (x2+1,x)=i x=-0.5 Root (x2+1,x)=-i x=-i способ: В MatLabe методы можно найти в одной из следующих форм: >> x=A-1B или >> x=A\B или >>х=inv(A) B Например: 11 2x1 x 2 3x 3 1 x1 x 2 2x 3 18 7 x1 5x 2 x 3 3 >>A=[2 1-3; 1-12; 751], >>B=[1; 18; 3] >>x=inv(A) B x= 6.7111 -9.0222 1.1333 Решения нелинейных систем уравнений в MatLabe.При решении нелинейных систе также полезно построение графиков всех уравнений входящих в систему, если это возможно( 2-мерный случай и каждое уравнение разрешимо относительно одной из переменных) Для этого используется fsolve (`file, x0), где file –имя M-файла, где сохраняются описания уравнения системы, х0-нач. значение. x1 x 2 x 3 6.5 4 x1 x 2 x 3 167 x1 x 62 x 3 1470 Предварительно пишется edit MatLaba или NotePad под именем MyFun M. Должно сохранятся в рабочем папке WORK. С помощью Edit пробел myfun M и нажать кнопку Save. В этом файле записана следующая текст Function f=myfun(x) f=[x(1)x(2)+x(3)-6.5; x(1)x(2)^4+x(3)-167; x(1) x(2)^6+x(3)-1470] Решение: xo=[1;1;1]; x=fsolve (`myfun', xo) xo=2.1512 2.9678 0.1157 Решение линейных систем уравнений в MathCad-e. Для решения линейных систем используется 2 метода. 1.матричный (м.е.) используется уравнения 12 x=A-1B Пример: используется функции solve. Дана линейная система 3x1 x 2 5 2 x 1 x 2 x 3 0 2x1 x 2 4x 3 15 Для ее решение в MathCade используя линейку кнопок матрица и правую часть. 3 10 A : 2 1 1 2 14 5 B : 0 19 x=A-1B 2 x 1 3 0.476 x 3571 2.619 Можно выполнить проверку записав следующее: 0 A x B 0 0 0 0 15 1,776 10 Эту же систему можно решить isolve x:=isolve (A,B) 2 x 1 3 13 Решение нелинейных с уравнений в MathCade. Для этого используется minerr find. Для этого имеется спец. вычисл. Блок со следующей структурой: Нач. приближение. Given Уравнение Ограничение Операторы с ф-мия Find или minerr. Нач. условия определ. Нач. знач. Искол. значений и зад. с помощью оператора присваивания. Уравнения записются с применением жирного знака равенства. Ограничения могут быть записаны в виде равенств и неравенств, а также могут отсутствовать. Формирование. При формировании используются также знаки = .. Функция find (v1, v2,..,vn) возвращает значение переменных, являющихся решением системы. Функция minerr (v1, v2,….,vn) пытается найти максимальное приближение к существующему решению, путем минимизации средн. квадратической погрешности. Пример 1. x 3 sin y 25 y 2 cos x 27 х:=1 y:=1 Given x3+sin(y)=25 y2-cos(x)=27 x : find ( x, y) y x=2.96 y=5.101 Пример 2. f(x,y):x4+y2-3 j(x,y):=x+2y x:=1 y:=1 Given 14 f(x,y)=0 j(x,y)=0 v:=find (x,y) 1,269 v= 0,635 Пример 3. x:=1 y:=1 Given x2+y2=1 x>0.1 y<=0.2 0,042 MINERR (x,y)= 0,085 Задания для индивидуального выполнения 1. Согласно порядкового номера А) решить алгебраическое уравнение (колонка 1) в Matlab и Mathcad B) решить трансцендентное уравнение (колонка 2) ) в Matlab и Mathcad С) решить нелинейную систему (колонка 3) ) в Matlab и Mathcad Варианты заданий № 1 2 3 1 3x4+4x3-12x2-5=0 ln(x)+(x+1)3=0 sin(x+1)-y=1.2 2x+cos( y)=2 2 2x3-9x2-60x+1=0 x2x=1 tg(xy+0.4)= x2 0.6 x2 +2 y2=1 3 x4-x-1=0 x+cos(x)=1 cos(x-1)+y=0.5 x-cos(y)=3 4 2x4 - x2-10=0 x+lg(1+x)=1.5 sin(x)+2y=2 cos(y-1)+x=0.7 5 3x4+8x3+6x2-10=0 lg(2+x)+2x=3 cos(x-1)+y=1 sin(y)+2x=1.6 6 x4 -18x2+5x-8=0 2x+5x-3=0 sin(x+1)-y=1 2x+cоs(y)=2 7 x4+4x3-12x2+1=0 5x+3x =0 sin(x-y)-xy=0 x2- y2=0.75 8 x4 - x3-2x2+3x-3=0 3ex=5x+2 sin(x+y)-1.5xy=0 x2+ y2=1 9 3x4+4x3-12x2+1=0 5x=6x+3 sin(x-y)- xy+1=0 x2- y2=0.75 10 3x4-8x3-18x2+2=0 2ex+5x-6=0 y=1/(x3/2+1) 15 x2+ y2=9 11 2x4-8x3+8x2-1=0 2arctg(x)-x+3=0 x2+ y2=9 y=1+ e-x 12 2x4+8x3+8x2-1=0 (x-3) cos(x)=1 x2+ y2=5 y=1-2 e-xy 13 x4-4x3-8x2+1=0 xx= 20-9x x2+ y2=5 y= e-xy 14 2x4-9x3-60x2+1=0 x lg(x)=1 sin(x-0.6)-y=1.6 3x-cos(y)=0.9 15 x5 +x2-5=0 tg3x=x-1 x2+ y2=6 y= e-x 16 3x4+4x3-12x2-7=0 5x =1+e-x x3+ y3=6 y= e-x 17 3x4+8x3+6x2-11=0 5x =3-ex x4+ y4=5 y= e-x 18 x4 -18x3-10=0 arctg(x2+1/x)=x x2+ y2=1 sin(x+y)=1.2x 19 3x4-8x3-18x2+2=0 tg(0.55x+0.1)=x2 x2+ y2=1 sin(x+y)=0.2+x 20 x4 -18x -10=0 5x-6x =7 x+cos(y-1)=0.8 y- cos(x)=2 21 x4 +18x -10=0 5x-6x =3 x2+ y2=1 x3+ y3=2 22 x4 +18x3-6x2+x-10=0 5x =1+e-2x x2+ y2=1 x - y3=0.5 23 x5 +12x3-6x2+x-10=0 7x-6x =2 x3+ y3=8 y=x3/2 24 3x5-8x3-18x2+2=0 5x =2+e-2x x3+ y3=8 y=1+x3/2 Лабораторная работа №3 Матричные вычисления в среде MATLAB и MATHCAD Цель : Приобретение практических навыков матричных вычислений Матричные операции в Matlab 1. Ввод вектора-строки >>A=[1 8 12 17]; 2. Ввод вектора столбца >> B=[1;2;-7;15]; 3. Ввод матрицы (3X3) >> C=[1 8 6;2 4 1;16 0 12] 16 C= 1 8 6 2 4 1 16 0 12 4. Нахождение размерностей матрицы >>dd= size (c) dd= 3 3 6. Ввод матрицы (3X2) >> B=[2 3;4 6;7 0] B= 2 3 4 6 7 0 7. Выделение подматрицы из матрицы, для этого используется символ : B1=B(1,:) выделение 1-ой строки DD=B(1:2,:) Выделение 1 и 2 строки CC=B(:,1) выделение 1-го столбца 4. Произведение двух матриц >> D=C*B D= 76 51 27 30 116 48 5. Вычисление детерминанта >> C= [1 8 6;2 4 1;16 0 12]; >> K=det(C) K= 17 -400 6. Вычисление обратной матрицы >> G=C^(-1) G= -0.1200 0.2400 0.0400 0.0200 0.2100 -0.0275 0.1600 -0.3200 0.0300 Матричные операции в MAThCAD Для ввода матрицы необходимо записать имя матрицы и оператор присваивания A:= на панели Матриц необходимо активизировать сивол матрицы , в окне набрать значения размерностей матрицы, на рабочем листе появится шаблон матрицы, необходимо заполнить ее значениями. Для работы с матрицами необходимо установить значение 1 для специальной системной переменной i ORİGİN , в этом случае индексация будет производится с 1, в противном случае с 0. ORIGIN 1 A 2 3 4 A 1 0 2 2 3 6 Для выделени подматрицы из матрицы необходимо пользоваться специальной функцией submatix(A,i1,i2,j1,j2). Misal A matrisadan 1 cı sətri seçməq üçün aşağıdaki koddan istifadə etmək olar B submatrix( A 1 1 1 3) B (2 3 4) Для вычисления суммы необходимо воспользоваться знаком суммы на панели Calculus 18 Последовательно используя этот знак можно вычислять сложные суммы Например для вычисления суммы элементов двух первых строк матрицы А необходимо выполнить следующее ORIGIN 1 2 3 4 A 1 0 2 2 3 6 2 3 . A i j 12 i1 j1 Для записи Ai,j необходимо воспользоваться знаком Xn с панели Matrix Для вычисления среднего mean(), минимума -min(), максимума-max() mean ( B) 3 min ( B) 2 max( B) 4 Задания для индивидуального выполнения Выбрать вариант в соответствии с порядковым номером студента и выполнить матричные вычисления в Matlab и Mathcad 1. Найдите сумму всех элементов матрицы A(3,5) и их число. 2.Найдите среднее для матрицы B(3,4) 3.Для матрицы A (4,3) найти min и max . 4. Для матрицы A(13, 10) Найти сумму элементов 1-го столбца и минимум элементов 2-ой строки. 19 5. Для матрицы A(8,6) Найти общую сумму элеметов 1-ой строки и 2-го столбца. 6. Для матрицы A(7,8) найти минимум 3 строки и максимум 4-го столбца. 7. Для матрицы A(4,4) найти сумму элементов левой половины. 8. Для матрицы A(6,6) найти среднее правой половины матрицы. 9. Для матрицы A(8,8) найти максимум и минимум верхней половины. 10. Для матрицы A(6,6) найти минимум 2-х верхних строк. 11 Для матрицы.A(8,8) найти сумму элементов четных 12. Для матрицы A(6,6) найти среднее нечетных строк. 13. Для матрицы A(10,10) найти максимум верхней половины и минимум нижней половины. 14. Для матрицы A(8,6) найти общую сумму 3 –го столбца слева и 2-ой строки снизу. 15. Для матрицы A(8,4) найти минимум 2-ой строки сверху и 3-го столбца слева Лабораторная работа №4 Вычисление производных и интегралов в Matlab и МаthCad Цель : Приобретение практических навыков вычисления производных и интегралов Как известно, производные существуют всех непрерывных функций и могут быть найдены соответствующим методом. Существуют понятия порядка производных 1, 2, 3 и т.д. Несмотря на это существуют численные методы дифференцирования, которые применяются когда функция задана таблично. Численные методы можно разделить на 2 группы: Методы использующие конечном разности, т.е. формулу f y . x Метод аппроксимации и интерполяции полиномами. Вычисление производных в MatLabе: 20 Для этого используется diff(a,x,n) порядок. Предварительно, нужно определит все переменные c помощью syms. syms x, n; y=xcos(x); diff(y,x,1) Ans=-sin(x) cosx(x) dif(y, x, 3) ANS = sin (x)x-3cos(x) Функция diff может быть использован для численного нахождения производных Dif(f) –где f-вектор. Значений задана таблично. f=[0 0.998 0.1987 0.2935 0.3594 0] d=dif(f) d=0.0998 0.0988 d2=-0.0010 -0.0020 0.0969 -0.030 0.0939 0.0900] -0.0039 Дифференцирование в MathCade: Для дифференцирования функций в MathCade можно использовать 2 приема: 1. С помощью значков d/dx dn/dxn 2. После чего знак и ответ выводится. 2 способ исходная функция выд. аргумент simbolуc variable Differente. Задания для индивидуального выполнения Выбрать вариант в таблице №3 в соответствии с порядковым номером студента и найти производную в Matlab и Mathcad Таблица № 3 21 22 f(x) f(x) 1 11 2 12 3 13 4 14 23 5 15 6 16 7 17 8 18 9 19 10 20 Интегрирование в MatLabе 1. Аналитический метод: Используется нахождение первообразной, с дальнейшими применением формулы Ньютона – Лейбница. Для неопределенные интеграла используется формула int(j(x)) и для определенные интеграла int(j(x), a,b). Для применения нужно использовать следующую технологию: 1. Определить все символьные переменные с помощью оператора syмs. 2. Определеть подынтегральную функцию. 3. Используя int- найти результат. Пример 1. Раскрыть неопределенный интеграл. syms x; y=x/(1+x2); int(y) ANS=1/2log(1+x2) Пример 2. Найти неопределенный интеграл: x (a bx 2 ) dx syms x a b; y=x/(a+bx^2); int (y) 24 ANS =1/(2b) log(a+b+x2) Пример 3. Вычислить определенный интеграл 5 x 1 x 2 dx 1 syms x; y=(x/(1+x^2)); in (y, 1,5) 1 ANS = log 13 2 Пример 4. Вычислит определенный интеграл символическим методом. b x 1 x 2 dx a1 syms a b x; y=x/(1+x^2); iny (y, a, b) ANS=½log(1+b2)-½ log(1+a2) Численные методы вычисления интегралов в MatLabе. 1. Функция QUAD (`fun`, a, b) реализован. метод Симпсона, или метод парабол. Пример 1. 5 (e x x 2 2 sin s)dx 1 Решение y=exp(x)+x^2+2sin(x)-5’; quad (y, 1,5) ANS =167,5415 Использование метода трапеций Trapzed (y) Если функция задана аналитически, то нужна его затабулировать. Пример 2. y=[1, 3, 5, 7, 9] y=[1 3 5 7 9]; trapz (y) ANS = 20 25 Пример 3. Функция задана аналитически y(x)=x·ex+ln(x+1) h=0.1 Решение x=1 : 0.1 : 10; y=x. exp(x)+log(x+1); trapz(y) ANS = 4.065 Пример 4. Метод Котеca. Quad 8 (name, x1, x2) Name функция x1, x2- пределы. Интегрирования в Mathad-e. Для вычисления первообраз. Можно исп. Значок интеграла в панели Calcus после чего необходимо запись имя фамилия и знак символа . 2-ой способ – записать подинтегральную функцию выделить аргумент х, далее Menu simbolic variable. Пример. 2 x dx x3 3 Для вычисления определенных интегралов необходимо использовать значок определенного интеграла , записать подынтегральную функцию и пределы. Если будет применен знак символического интегрирования, то будет использован аналитический метод. Если же будет использован знак = to вычисление будет производится численно по методу Romberga, sin( x)dx 0 0 . Задания для индивидуального выполнения 26 Выбрать вариант в таблице №4 в соответствии с порядковым номером студента и вычислить интеграл в Matlab и Mathcad Таблица №4 1 2 3 4 5 6 7 8 9 10 27 11 12 13 14 15 16 17 18 19 20 21 22 23 28 24 f(x) [a, b] f(x) [a, b] 1 [0, 16] 11 [0,4 ] 2 [0, 1] 12 [0,2 ] 3 [0, 5] 13 [0, ] 4 [3, 5] 14 [6, 9] 15 [8, 12] 16 [6, 10] 5 [0, ] [0, ] 6 7 [0, 4] 17 [0, 3] 8 [0, 2] 18 [1, 64] 9 [0, 4] 19 [0, 3] 10 [0, 5] 20 [0, 1] Лабораторная работа №5 Решение дифференциальных уравнений и систем уравнений в среде Matlab и Mathcad. Цель : Приобретение практических навыков решения дифференциальных уравнений и систем уравнений 29 Решение дифференциальных уравнений в Matlab Имеется множество стандартных функций например dsolve (‘dy(x)’, ‘нач. усл.’) Пример dx 0 .5 x dt с начальным условием x( 0 ) 10. >> x1=dsolve('Dx=-0.5*x','x(0)=10') x1 = 10*exp(-1/2*t) Эта система может использоваться для решения систем уравнений Dsolve (‘df(x)’,’dg(x)’,’н.у.’) Решить систему однородных дифференциальных уравнений dx1 dx2 0.5 x2 , x1 dt dt с начальными условиями x1( 0 ) 0, x2( 0 ) 1 >> [x1,x2]=dsolve('Dx1=-0.5*x2','Dx2=3*x1','x1(0)=0','x2(0)=1') x1 = -1/6*6^(1/2)*sin(1/2*6^(1/2)*t) x2 = cos(1/2*6^(1/2)*t) Решение в MathCad В MathCad имеется функция odesolve(x,tf,step) позволяет решать линейные дифферинцальные уравнения методом РунгеКутта. 30 Аналогично ode 23 и ode 45 в Mathcad-е имеется ф-ия: rkfixed(y,x1,x2, npoints,D), где у- вектор начальных условий; х1,х2- интервал интегрирования; npoints- кол-во вычисляемых точек; D- вектор правых частей системы. Пример№ 3 31 Пример№4 32 33 Задания для индивидуального выполнения Выбрать вариант в таблице №5 в соответствии с порядковым номером студента и решить дифференциальное уравнение в Matlab и Mathcad Таблица № 5 № f(t, y) t0 tk y0 № f(t, y) t0 tk y0 1 0 1 3 14 1 2 0 2 1 2 0 15 0 0.5 1 3 0 2 1 16 y2t 0 2 1 4 1 2 0 17 ye-2t 0 1 1 5 2 3 1 18 tye-2t 0 1 1 6 2 3 1 19 t2ye-2t 0 1 1 7 tg(t)/y2 0 /4 1 20 tg(t)/y 0 /4 1 8 ye2t 0 1 1 21 y2t2 0 1 1 34 9 0 1 1/e 22 y2 / t2 1 3 1 10 0 1 1/e 23 y ln(t) / t 1 3 1 11 0 1 0 24 y2 ln(t) / t 1 3 1 12 0 0.9 0 25 yet/2 0 1 2 13 0 1 3 26 ctg(t) / y2 /4 /2 1 35 Лабораторная работа №6 Решение задач аппроксимации в среде Matlab и Mathcad Цель : Приобретение практических навыков решения задач аппроксимации Аппроксимация в Matlab-e. В Matlabe имеется функция для аппроксимации полиномами. Название функции : polyfit(x,y,n), где x-вектор значения аргументов, y-вектор значений функций, n-порядок полинома. Пример: Найти полином 2-го порядка для аппроксимации данных: y=a2*x2+a1* x+a0; >> x=[0 0.3 0.8 1.1 1.6 2.3]; >> y=[0.6 0.67 1.01 1.35 1.47 1.25]; >> p=polyfit(x,y,2) p= -0.2942 1.0231 0.4981 Для превращения сравнительного анализа экспериментальных данных и полученных по аппроксимирующей функции, необходимо вычислить её и построить график. Для вычисления значений ф-ии полинома имеется спец функция: polyval(р,x) Здесь x-интервал значения аргументов; р- значения коэффициентов. >> x1=0:0.1:2.8; >> y1=polyval(p,x1); >> plot(x,y,'0',x1,y1) Для решения общей задачи аппроксимации, как линейной, так и нелинейной, в Matlabe имеется спец. Ф-ия: lsqcurvefit(f,x0,a,b) Здесь а- вектор значений функций, х0- стартовое значение параметров функции f- аппроксимирующая, заданная пользователем. 36 Функция основана на известном методе Мак-Кварда минимизации функции многих переменных. Этот метод относится к методу группы градиентных методов. Практически, как и все градиентные методы, он сходится к начальному минимуму. Пример: Задано значение экспериментальных данных: >> a=[30,40,50,60,70,80,90,100,110,120]; >> b=[6.36 6.85 7.38 7.84 8.08 8.32 8.57 8.70 8.82 8.94]; (y=a2*x2+a1* x+a0) >> x0=[1 1 1]; >> f=inline('x(3)*a.^2+x(2)*a+x(1)','x','a'); coef=lsqcurvefit(f,x0,a,b) Нахождение аппроксимирующей функции в случае: m y Ck k( x) k 1 В Matlabe может быть реализовано путем прямого построения матриц системы нормальных уравнений и е решения путем известных методов. Использование операций, обратное деление матриц. Теоретическая ф-ия: y=a0+a1*e-t+a2*t* e-t >> t=[0 0.3 0.8 1.1 1.6 2.3]'; >> y=[0.6 0.67 1.01 1.35 1.47 1.25]'; >> x=[ones(size(t)) exp(-t) t.*exp(-t)]; >> a=x\y a= 1.3983 -0.8860 0.3085 Значит ф-ия записывается : у=1.3983-0.8860 e-t+0.3085t*e-t Аппроксимация в Mathcade В Mathcade имеется несколько ф-ий для решения задачи аппроксимации. 1) Аппроксимация линейной функции (линейная регрессия) выполняется с помощью двух ф-ий: ( slope( x y) )b у=а+bx ( inteccept( x y) )a Пример: 37 T x ( 0 1 2 3 4 5 6 ) T y ( 4.1 2.4 3.0 4.3 3.6 5.2 5.9 ) slope( x y) 0.414 intercept( x y) 2.829 f( t) intercept( x y) slope( x y) t 10 6 5 5 f( t ) f( x) 4 0 5 3 10 0 2 10 0 t 2 4 6 2) Полиномиальная регрессия A(x)=a+bx+cx2 +dx3 +..... regress(x,y,k) где к- порядок полинома x T Пример: x ( 0 1 2 3 4 5 6 ) T y ( 4.1 2.4 3.0 4.3 3.6 5.2 5.9 ) k 2 s regress ( x y k) 3 3 2 s 3.602 0.514 0.155 В Mathcade имеется ряд функций для аппроксимации специальных видов функций: expfit(x,y,g)-Экспоненциальная регрессия , где g-вектор коэффициентов (a,b,c) lgsfit(x,y,g)-логическая регрессия , где F(x)= a 1 b e cx logfit(x,y,g)- логарифмическая регрессия , где f(x)=a*ln(x+b)+c Пример: 1) экспонент регрессия 38 T x ( 0 1 2 3 4 5 6 ) T y ( 4.1 2.4 3.0 4.3 3.6 5.2 5.9 ) 1 g 1 1 c expfit( x y g) 0.109 c 0.548 3.104 2) Регрессия общего вида n y k 1 Ck k( x) Функция φ1 φ2 –задаются пользователем Unfit(x,y,f) Здесь f(x)- пользовательская функция T x ( 0 1 2 3 4 5 6 ) T y ( 4.1 2.4 3.0 4.3 3.6 5.2 5.9 ) F( x) x x e 1 x 1 Задание. Найти оценки для параметров модели y= 0 + 1x + 2x2. 1. x 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 y 0.4 0.3 1.0 1.7 2.1 3.4 4.1 5.8 x 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 y 7.7 9.4 11.4 13.6 15.6 18.6 21.2 24.1 2. 3. 39 x 0.4 0.8 1.2 1.6 2.0 2.4 2.8 3.2 3.6 y 0.43 0.94 1.91 3.01 4.0 4.56 6.45 8.59 11.15 x 4.0 4.4 4.8 5.2 5.6 6.0 6.4 6.8 y 13.88 16.93 20.47 24.15 28.29 32.61 37.41 42.39 x 1 2 3 4 5 6 y 2.11 2.45 2.61 2.73 2.75 2.81 x 0.3 0.6 0.9 1.2 1.5 1.8 y 4.39 4.75 4.98 5.11 5.12 5.18 x 1 2 3 4 5 6 y 0.1 0.21 0.43 0.51 0.62 0.81 6. x 1.0 1.5 2.0 2.5 3.0 3.5 4.0 y 4.11 4.16 4.23 4.29 4.36 4.42 4.53 x 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 y 2.47 2.86 3.01 2.91 2.55 2.11 2.61 1.25 ƏDƏBİYYAT 1. Дьяконов В. Matlab 6. Учебный курс. – СПб.: Питер, 2001. 2. Дьяконов В.П. MathCAD 2000: Учеб. курс. СПб.: Питер, 2000. 40