КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Метод Ньютона с использованием аналитического представления функции
Метод половинного деления e = 1e-04; %Устанавливаем допустимую погрешность dx = 0.1; %шаг х при поиске интервала, содержащего корень a = -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 x0=0.5; x=fzero('fun', x0) % проверка
syms x; % cимвольная (аналитическая) переменная % определяется аналитическое описание функции F(x) f = (1 - x)^(1/2) - tan(x); f1 = diff(f); % определяется производная функции F'(x) ezplot(f), grid on % строится график функции для визуального % определения первого приближения корня. x0 = input('Задайте значение x0: ') % вводом с клавиатуры % задается первое приближение корня err = 1e-05; % задается допустимая погрешность вычисления корня delta = x0; % текущая погрешность вначале равна допустимой погрешности X = [ x0 ]; % формируется вектор последовательных приближений % корня к его конечному значению n = 1; % номер первого приближения N = [ n ]; % формируется вектор номеров приближений корня
% организуется цикл определения последовательных приближений корня % методом Ньютона while abs(delta) > err % повторять вычисления пока текущая погрешность % больше допустимой x1 = x0 - subs(f, x, x0) / subs(f1, x, x0); % Вычисляется следующее % приближение корня. delta = x1 - x0; % вычисляется текущая погрешность вычислений x0 = x1; % следующее приближение становится текущим X = [X x1]; % в вектор Х добавляется следующее приближение n = n+1; % номер следующего приближения N = [N n]; % в вектор N добавляется номер следующего приближения end; str_out = 'x = '; % формируется строка вывода результатов вычисления корня res = num2str(x1); str_out = strcat(str_out, ' ', res); disp(str_out); % строка вывода отображается в командном окне plot(N, X, 'Linewidth', 3, 'Color', [0 1 0]), grid on % строится график % приближения корня
Задание №2.
Дата добавления: 2015-05-10; Просмотров: 273; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |