Лабораторная работа. лаба2. M и постройте график функции на отрезке 10 10, включив командой
![]()
|
Напишите файл-функцию f.m и постройте график функции на отрезке [-10; 10], включив командой gridon отображение линий сетки. Выделите отрезки, содержащие нули функции – графический способ это один из методов локализации корней. Очевидно, функция имеет корни одинарной и двойной кратности. Запишите вектор p, содержащий коэффициенты полинома, и найдите его корни, выполнив команду roots(p). function []= f(fun) plot(-10,subs(fun,'x',-10)) hold on for i=-10:0.01:10 plot(i,subs(fun,'x',i)) end grid on end >> f(@(x)x^3-3*x^2-9*x-5) >> line([-2 -2],[-250 250],'Color','Red') >> line([0 0],[-250 250],'Color','Red') >> line([4 4],[-250 250],'Color','Red') >> line([6 6],[-250 250],'Color','Red') ![]() >> p=[1 -3 -9 -5]; >> roots(p) ans = 5.0000 -1.0000 + 0.0000i -1.0000 - 0.0000i >> fzero('x^3-3*x^2-9*x-5',0) ans = 5 Fzero не найдёт корень х=-1, так как функция при переходе через эту точку не меняет знак Напишите программу, реализующую нахождение корня одинарной кратности методом деления отрезка пополам. Обратите внимание, что метод дихотомии предполагает, что значения функции на концах отрезка различаются по знаку. function c=dix(fun,a,b,eps) while (abs(b-a)>eps) c=(b+a)/2; fa=subs(fun,'x',a); fb=subs(fun,'x',b); fc=subs(fun,'x',c); if (fc*fa<=0) b=c; else a=c; end end end >> dix(@(x)x^3-3*x^2-9*x-5,4,6,0.0001) ans = 4.9999 Напишите программу нахождения решений уравнения ![]() function xn=metH(fun,x0,eps) f0=subs(fun,'x',x0); fx=diff(fun,'x'); fn=subs(fx,'x',x0); xn=x0-f0/fn; while (abs(xn-x0)>=eps) x0=xn; f0=subs(fun,'x',x0); fn=subs(fx,'x',x0); xn=x0-f0/fn; end end >> meth('x^3-3*x^2-9*x-5',-3,0.0001) ans = -1.0001 >> meth('x^3-3*x^2-9*x-5',4,0.0001) ans = 5.0000 Найдем методом простых итераций корни уравнения ![]() ![]() ![]() ![]() function xn=pitr(fun,x0,eps) x1=subs(fun,'x',x0); xn=subs(fun,'x',x1); while((xn-x1)^2/abs(2*x1-xn-x0)>=eps) x0=x1; x1=subs(fun,'x',x0); xn=subs(fun,'x',x1); end end >> pitr(@(x)1/2*(4/x+x),1,0.0001) ans = 2.0000 Сделайте предположения о том, где находятся корни уравнения ![]() >> f(@(x) sin(x)-x/2) >> line([-1 -1],[-1 1],'Color','Red') >> line([1 1],[-1 1],'Color','Red') >> line([3 3],[-1 1],'Color','Red') >> line([-3 -3],[-1 1],'Color','Red') ![]() Метод дихотомии >> dix(@(x)sin(x)-x/2,-1,1,0.001) ans = -9.7656e-004 >> dix(@(x)sin(x)-x/2,1,3,0.001) ans = 1.8955 >> dix(@(x)sin(x)-x/2,-3,-1,0.001) ans = -1.8955 Метод Ньютона >> meth('sin(x)-x/2',0.1,0.0001) ans = 0 >> meth('sin(x)-x/2',2,0.0001) ans = 1.8955 >> meth('sin(x)-x/2',-2,0.0001) ans = -1.8955 Метод простых итериций >> pitr(@(x)2*sin(x),2,0.0001) ans = 1.8956 >> pitr(@(x)2*sin(x),-2,0.0001) ans = -1.8956 >> pitr(@(x)arcsin(x/2),1,0.0001) ans = 6.4924e-005 >> dix(@(x)x^3-3*x^2-9*x-5,4,6,0.0001) n = 15 ans = 4.9999 >> meth('x^3-3*x^2-9*x-5',4,0.0001) n = 4 ans = 5.0000 >> pitr(@(x)3+9/x+5/x^2,4,0.0001) n = 10 ans = 4.9999 ![]() |