close

Вход

Забыли?

вход по аккаунту

?

Prog

код для вставкиСкачать
 Содержание
Введение.............................................................................3
Линейная алгебра..........................................................4
Построение графиков.....................................................13
Численное интегрирование..............................................16
Численное дифференцирование........................................19
Решение дифференциальных уравнений.............................24
Заключение.........................................................................31
Список литературы...............................................................32
Введение
В данной работе представлены результаты решения различных математических задач двух разных математических пакетах. В отчете приведено сравнение выходных значений, полученных в системах MatLab и MathCad. Приведена оценка полученных результатов, а так же показано, как реализованы те или иные задачи в различных математических пакетах.
В системt MatLab задания выполнены в большинстве своем посредством программирования, а в системе MathCad с помощью встроенных функций.
Линейная алгебра
Задание №1.
Выполнение в MathCad:
а) -3, б) , в) Выполнение в MatLab:
a=[3,2,1;2,5,3;3,4,2]
>> det(a)
ans = -3
>> a=[2,0,2,-1;3,1,5,1;0,4,2,3;1,1,3,1]
>> det(a)
ans = 12
>> a=[2,-1,1,2;0,1,2,0;3,1,2,2;3,1,6,0]
>> det(a)
ans = 26
Задание №2
Выполнение в MatLab:
Даны матрицы и .
Найти: а) матрицу ,
б) матрицу ,
в) матрицу . Сделать проверку.
Текст программы:
>> a=[1,2,-3;0,1,2;1,0,4]
a =
1 2 -3
0 1 2
1 0 4
>> b=[4,0,-1;2,1,1;1,3,0]
b =
4 0 -1
2 1 1
1 3 0
Выходные данные:
>> -a+3*b
ans =
11 -2 0
6 2 1
2 9 -4
>> a*b-b*a
ans =
2 -15 17
1 2 1
7 7 -4
>> a^-1
ans =
0.3636 -0.7273 0.6364
0.1818 0.6364 -0.1818
-0.0909 0.1818 0.0909
Проверка полученной обратной матрицы:
>> ans*a
ans =
1 0 0
0 1 0
0 0 1
Выполнение в MathCad:
Задание №3.
Выполнение в MathCad:
Выполнение в MatLab:
Текст программы:
a)
>> a=[4,3;3,-1]
>> b=[6,-2;37,-21]
>> x=a^-1*b
x =
9.0000 -5.0000
-10.0000 6.0000
б)
>> a=[-1,4,7;0,2,8;1,-2,-1]
>> b=[-1,6,13;5,-10,-3;3,-10,-13]
>> x=b*a^-1
x =
2 0 1
-1 1 4
-3 1 0
Задание №4.
Выполнение в MathCad:
Выполнение в MatLab:
Текст программы-функции:
function [Y]=L4(X)
Y=4*X^2-3*X+2;
End
>> a=[1,1,-1;2,1,0;1,-1,0]
>> L4(a)
ans =
7 11 1
12 11 -6
-5 5 -2
Задание №5.
Выполнение в MathCad:
Выполнение в MatLab:
Текст программы:
>> c=[5,8,-4,0,0;6,9,-5,0,0;4,7,-3,0,0;0,0,0,1,-2;0,0,0,0,1]
>> d=[3,2,5,0,0;4,-1,3,0,0;9,6,5,0,0;0,0,0,1,-2;0,0,0,0,1]
>> c*d
ans =
11 -22 29 0 0
9 -27 32 0 0
13 -17 26 0 0
0 0 0 1 -4
0 0 0 0 1
>> d*c
ans =
47 77 -37 0 0
26 44 -20 0 0
101 161 -81 0 0
0 0 0 1 -4
0 0 0 0 1
Задание №6.
Решить системы методом Крамера:
а) б) Выполнение в MathCad:
Выполнение в MatLab:
Текст программы:
a)a=[2,-1,3;3,-5,1;4,7,1];
x1=[9,-4,5;3,-5,1;4,7,1];
x2=[2,-1,3;9,-4,5;4,7,1];
x3=[2,-1,3;3,-5,1;9,-4,5];
det0=det(a);
det1=det(x1);
det2=det(x2);
det3=det(x3);
X=[det1/det0;det2/det0;det3/det0]
б)a=[2,5,4,1;1,3,2,1;2,10,9,9;3,8,9,2];
x1=[20,11,40,37;1,3,2,1;2,10,9,9;3,8,9,2];
x2=[2,5,4,1;20,11,40,37;2,10,9,9;3,8,9,2];
x3=[2,5,4,1;1,3,2,1;20,11,40,37;3,8,9,2];
x4=[2,5,4,1;1,3,2,1;2,10,9,9;20,11,40,37];
det0=det(a);
det1=det(x1);
det2=det(x2);
det3=det(x3);
det4=det(x4);
X=[det1/det0;det2/det0;det3/det0;det4/det0]
>> L6a
X =
0.9490
1.5102
0.6429
>> L6b
X =
173.6667
-261.3333
22.0000
-36.6667
Задание №7.
Выполнение в MathCad:
a)
б)
Выполнение в MatLab:
Текст программы:
a)
a=[2,7,3;3,9,4;1,5,3];
b=[1;0;2];
X=a^(-1)*b
б) a=[1,2,-1;2,3,1;1,-1,-1];
b=[-3;-1;3];
X=a^(-1)*b
>> L7a
X =
-3
1
0
>> L7b
X =
2
-2
1
2. Построение графиков.
Работа в MathCad:
№6.
№7.
№8.
Работа в MatLab:
Код функции:
function [y]=graphic(a,b,s,g);
x=a:s:b;
switch g
case 6
y=(x.^2+16)./(sqrt(9*x.^2-8))
case 7
y=(9+6*x-3*x.^2)./(x.^2-2*x+13)
case 8
y=(exp(3-x))./(3-x)
end
plot(x,y);
grid on;
end
Сами графики будут иметь вид:
Задание №6
Задание №7
Задание №8
Численное интегрирование
Интегрирование в системе MathCad:
№2.
№4.
№8.
№9.
Интегрирование в системе MatLab:
Функция, задающая подынтегральные функции:
function [y]=fi(x,i)
switch i
case 2
y=(x.^2-3*x)*sin(2*x);
case 4
y=(x.^3)/(x.^2+1);
case 8
y=(1+sin(x))/(1-sin(x).^2);
case 9
y=(12+tan(x))/(3*sin(x).^2+12*cos(x).^2);
end;
end Функция, выводящая численные значения определенных интегралов методом трапеции:
function [z]=tp(a,b,n,j)
dx=(b-a)/n;
z=0;
for i=1:n
z=z+0.5*(fi(a+dx,j)+fi(a,j))*dx;
a=a+dx;
end
Выходные данные:
Задание №2
>> tp(0,3,100,2)
ans =
-0.2196
Задание №4
>> tp(0,1,100,4)
ans =
0.1534
Задание №8
>> tp(0,2*atan(1/2),100,8)
ans =
8.6654
Задание №9
>> tp(0,atan(2),100,9)
ans =
1.6864
Численное дифференцирование
Дифференцирование в MathCad:
№5.
№6.
№7.
№8.
Дифференцирование в MatLab:
Составляем две программы-функции, одна из которых задает дифференцируемые функции, а вторая дифференцирует на выбранном отрезке методом центральных разностей и строит график производной.
function [y]=ff(x,i)
switch i
case 5
y=(sqrt(x-1).*(3*x+2))./(4*x.^2);
case 6
y=x+1./(1+exp(x))-log(1+exp(x));
case 7
y=log(log(tan(x))./log(5))./log(16)
case 8
y=(cos(cot(3))*cos(14*x)^2)/(28*sin(28*x));
end
end
function [y]=cntr(a,b,j)
dx=0.01;
x=a:dx:b;
y=ff(x,j);
y1=diff(y);
x1=a:dx:b-dx;
plot(x1,y1);
grid on;
end
Результаты дифференцирования:
Задание №5
Задание №6
Задание №7
Задание №8
5. Решение дифференциальных уравнений
Работа в MathCad:
№4.
№5.
№6.
№11.
№16.
Работа в MatLab:
Задание №4.
Программа-функция:
function dy=F1_4(x,y)
dy=zeros(1,1);
dy(1)=sin(x)-y(1)/x;
end
Результат вычислений:
>> [x,y]=ode15s('df_4',[1 6],4);
>> plot(x,y);
>> grid on;
Задание №5.
Программа-функция:
function dy=df_5(x,y)
dy=zeros(1,1);
dy(1)=(y+2-3*x*y^2*(y-1))/(y^3*(y-1));
end
Результат вычислений:
>> [x,y]=ode15s('df_5',[0.25 3],2);
>> plot(x,y);
>> grid on;
Задание №6.
Программа-функция:
function dy=df_6(x,y)
dy=zeros(1,1);
dy(1)=(x*y(1)^2-y(1))/(3*x);
end
Результат вычислений:
>> [x,y]=ode15s('df_6',[3 4],3);
>> plot(x,y);
>> grid on;
Задание №11.
Программа-функция:
function dy=df_11(x,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=50*y(1)^3;
end
Результат вычислений:
>> [x,y]=ode15s('df_11',[1 6],[1 5]);
>> plot(x,y)
>> grid on
Задание №16
Программа-функция:
function dy=df_16(x,y)
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=y(1)+exp(-x)/(2+exp(-x));
end
Результат вычислений:
>> [x,y]=ode15s('df_16',[8 13],[log(27) (log(9)-1)]);
>> plot(x,y);
>> grid on;
Решение краевой задачи.
Краевую задачу в системе MatLab решим с помощью метода половинного деления. Решим следующий пример:
Возьмем начальный отрезок [2.5,3.5]. Текст программы-функции будет иметь вид: function []=border(dy,a,b,c,d)
a1=2.5;
a2=3.5;
h=(a1+a2)/2;
[x1,y1,y11]=ode15s('df_11',[a b],[c h]);
r=size(y11);
while dy<(d-y11(r))
if y11(r)>d
a2=h;
end;
if y11(r)<d
a1=h;
end;
h=(a1+a2)/2;
[x1,y1,y11]=ode15s('df_11',[a b],[c h]);
r=size(y11);
end;
plot(x1,y1(:,1));
grid on;
end
Задав точность 0,000001 на выходе будем иметь график функции:
Заключение
После выполнения заданий мы видим, что при численных решениях результаты если и отличаются, то незначительно (<0,5%). Однако при построении графиков функций система MathCad показывает более точные результаты. Это происходит из-за того, что в MatLab нам приходится использовать программирование на основе численных методов (метод трапеций, метод центральных разностей и т.д.). В пакете MathCad же используются более точные встроенные методы, что позволяет проделывать работу более быстро и наглядно.
Список литературы
Глаголев В.В., "Математическое моделирование в системе MatLab".
Кузнецов Л.А., "Сборник задач по высшей математике".
32
Документ
Категория
Разное
Просмотров
16
Размер файла
417 Кб
Теги
prog
1/--страниц
Пожаловаться на содержимое документа