Главная страница
Навигация по странице:

  • Метод дихотомии

  • Метод простых итериций

  • Лабораторная работа. лаба2. M и постройте график функции на отрезке 10 10, включив командой


    Скачать 48.63 Kb.
    НазваниеM и постройте график функции на отрезке 10 10, включив командой
    АнкорЛабораторная работа
    Дата13.05.2023
    Размер48.63 Kb.
    Формат файлаdocx
    Имя файлалаба2.docx
    ТипДокументы
    #1127258

    Напишите файл-функцию 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

    Найдем методом простых итераций корни уравнения (квадратный корень из числа a). Приведем уравнение к виду, удобному для использования метода: . Можно убедиться, что правая часть уравнения удовлетворяет условию сходимости метода (в отличие от таких представлений как: , …). Напишите программу вычисления квадратного корня с машинной точностью.

    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



    написать администратору сайта