- •График сумм и исходной функции 1
- •1)Методом секущих
- •График приближения корня
- •2)Методом Ньютона
- •График приближения корня
- •4)Методом итераций
- •5)Методом половинного деления
- •График последовательного приближения и график приближения корня
- •1)Матричным методом
- •2)Методом Крамера
- •3)Методом Гауса с выбором главного элемента
- •График функции
- •1)Челночным методом
- •2)Методом «Пузырька»
- •3)Методом слияния
- •4)Методом Вставки
- •График зависимости времени от размерности массива
Московский авиационный институт
(государственный технический университет)
Вычислительная практика в системе «MATLAB»
Выполнил: студент группы 07-202 Красовский Сергей
Проверил:Чемякин Антон Владимирович
Москва 2011
Задание №1
Цель:Разложить функцию в ряд Фурье
syms x k pi
f_x=maple( 'piecewise( x<0, 0, piecewise( x<2, x^2), piecewise( x<pi, -x+4 )))');
a_0=1/pi*int( f_x, x, -pi, pi )
a_k=1/pi*int( f_x*cos( k*x ), -pi, pi)
b_k=1/pi*int( f_x*sin( k*x ), -pi, pi )
sum4 = a_0/2 + symsum( a_k*cos( k*x ) + b_k*sin( k*x ), k, 1, 20 );
pretty(sum4)
sum9=a_0/2+symsum(a_k*cos(k*x)+b_k*sin(k*x),k,1,25);
pretty(sum9)
clear pi
subplot(1,2,1)
ezplot(sum4),hold on
grid on, hold on
ezplot(sum9),hold on
x=0:0.1:2;
plot(x,x^2,'r'),hold on;
x=2:0.1:pi;
plot(x,-x+4,’r’)
График сумм и исходной функции 1
Вывод к задаче 2: раздожили функцию в ряд фурье, простота написания кода; в ходе решения подключали ядро Mapple .
Задание №2
Решить Трансцендентное уравнение +=0
1)Методом секущих
e=1e-08; %Устанавливаем допустимую погрешность
x_k=3; %значение k-го приближения
xk_minus_1=1; %значение k-1-го приближения
I=0; %счётчик интераций I устанавливаем в ноль
delta=x_k;
D=[delta];
while abs(delta)>e%начало цикла интераций
xk_plus_1=x_k-(fun(x_k)/(fun(x_k)-fun(xk_minus_1)))*(x_k-xk_minus_1); %следующее приближение
delta=xk_plus_1 - x_k; %текущая погрешность
D=[D delta];
xk_minus_1=x_k;
x_k=xk_plus_1; %переприсваиваем приближения, чтоб перейти к следующему
I=I+1;
end;
Str=['Значение корня: ' num2str(x_k)];
disp(Str)
Str=['Точность: ' num2str(delta)];
disp(Str)
Str=['Количество интераций: ' num2str(I)];
disp(Str)
plot(D)
График приближения корня
Значение корня: 0.35885
Точность: -1.0928e-009
Количество интераций: 8
2)Методом Ньютона
e = 1e-08; %допустимая погрешность
x_k = 1; %задаем значение первого приближения
I = 0; %счетчик итераций I устанавливаем в ноль
delta = x_k;
D = [ delta ];
while abs( delta ) > e %начало цикла итераций
xk_plus_1 = x_k - fun( x_k ) / fun1( x_k ); %следующее приближение
delta = xk_plus_1 - x_k;
D = [ D delta ];
x_k = xk_plus_1; %переприсваиваем приближения, чтобы перейти к следующему
I = I+1;
end;
Str = ['Значение корня: ' num2str( xk_plus_1 ) ];
disp( Str )
Str = ['Точность: ' num2str( delta ) ];
disp( Str )
Str = ['Количество итераций: ' num2str( I ) ];
disp( Str )
plot( D )
График приближения корня
Значение корня: 0.35885
Точность: 2.4741e-011
Количество итераций: 5
4)Методом итераций
e = 1e-04; %допустимая погрешность
xk = 0.5; %задаем значение первого приближения
I = 0; %счетчик итераций I устанавливаем в ноль
delta = xk;
while abs( delta ) > e %начало цикла итераций
xk_plus_1=log(log(xk))/2;
delta = xk_plus_1 - xk; %текущая погрешность
xk = xk_plus_1; %перейти к следующему приближению
I = I+1;
end;
Str = ['Значение корня: ' num2str(xk) ];
disp( Str )
Str = ['Точность: ' num2str(delta) ];
disp( Str )
Str = ['Количество итераций: ' num2str( I ) ];
disp( Str )
Значение корня: 0.35885
Точность: 2.3611e-011
Количество итераций: 11
5)Методом половинного деления
e = 1e-04; %Устанавливаем допустимую погрешность
dx = 0.1; %шаг х при поиске интервала, содержащего корень
a = 0.1;
b = a;
while fun(a)*fun(b) > 0 %Определяем интервал, на котором
b = b + dx; % функция F( x ) меняет знак
end;
a = b - dx;
x = (a+b)/2; % Первое приближение корня -
% середина найденного интервала
I = 1; % Счетчик итераций устанавливаем в "1"
X=[x]; % Формирование массивов для графиков
Y=[fun(x)];
while abs( fun(x) ) > e
if fun( x ) * fun( a ) < 0 %Если функция имеет разные знаки
%на концах отрезка,
b = x; %сдвигаем правую границу
else
a = x; % иначе сдвигаем левую границу
end;
x = (a+b)/2; %и вычисляем следующее приближение
I = I + 1; %увеличиваем количество итераций на 1
X = [X x];
Y = [Y fun(x)];
end;
Str = ['Значение корня: ' num2str(x) '; Количество итераций: ' num2str(I)];
disp( Str )
figure %Построение двух графиков в одном графическом окне
subplot( 2, 1, 1 );
plot( X, '-r' ), grid on
subplot( 2, 1, 2 );
plot( Y, '-b' ), grid on