АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Численные методы решения нелинейных алгебраических уравнений

Читайте также:
  1. FAST (Методика быстрого анализа решения)
  2. I. 2.1. Графический метод решения задачи ЛП
  3. I. Составление дифференциальных уравнений и определение передаточных функций
  4. I.5.5. Просмотр и анализ результатов решения задачи
  5. I.СИСТЕМЫ ЛИНЕЙНЫХ УРАВНЕНИЙ. МЕТОД ГАУССА
  6. II Съезд Советов, его основные решения. Первые шаги новой государственной власти в России (октябрь 1917 - первая половина 1918 гг.)
  7. II. Методы непрямого остеосинтеза.
  8. II. Рыночные методы.
  9. III этап: Анализ решения задачи
  10. III. Методы искусственной физико-химической детоксикации.
  11. III. Параметрические методы.
  12. IV. Современные методы синтеза неорганических материалов с заданной структурой

 

Теорема Больцано-Коши о промежуточных значениях непрерывной функции утверждает, что если непрерывная функция принимает два значения, то она принимает и любое значение между ними.

Следствие (теорема о нуле непрерывной функции): если непрерывная функция принимает на концах отрезка положительное и отрицательное значение, то существует точка, в которой она равна нулю.

 

Функция fzero позволяет приближенно вычислить корень уравнения на некотором интервале или ближайший к заданному начальному приближению.

В простейшем варианте fzero вызывается с двумя входными и одним выходным аргументом

 

х = fzero ( 'func_name’ , х0),

 

где func_name – ИМЯ файл-функции, вычисляющей левую часть уравнения,

х0 – начальное приближение к корню,

х – найденное приближенное значение корня.

 

Пример 1. Нахождение корней уравнения sin(x)-x*cos(x)= 0 на отрезке [-5, 5]

Перед нахождением корней нужно построить график функции, входящей в левую часть уравнения.

Задание 1. Создать файл-функцию myf(x), вычисляющую левую часть уравнения из примера 1. Построить график функции, входящей в левую часть уравнения, sin(x)-x*cos(x)= 0 на отрезке [-5, 5].

 

Уточните значение корня, расположенного вблизи х = - 5 , при помощи fzero:

 

x1=fzero('myf',-5)

 

x1 =

 

-4.4934

 

Итак, приближенное значение корня равно -4.7566. При указании начального приближения к корню алгоритм fzero автоматически отделяет корень, т. е. вблизи заданного начального приближения находится отрезок, содержащий корень. В этом случае fzero может использовать больший интервал определения функции, чем исходный отрезок [-5, 5].

Проверьте ответ, вычислив значение функции myf в точке xl

myf(x1)

 

ans =

 

1.1102e-016

 

Проверьте работу fzero, вычислив корень myf, расположенный вблизи нуля, там, где точное значение корня равно нулю.

 

x4=fzero('myf',0.1)

 

x4 =

 

-7.4135e-009

 

Задание 2. Найти корень х2, расположенный около точки 5.

 

Вместо начального приближения вторым параметром fzero можно задать интервал, на котором следует найти корень:

 

x2=fzero('myf',[-5 -1])



 

x2 =

 

-4.4934

 

На границах указываемого интервала функция должна принимать значения разных знаков (см. теорему о нуле непрерывной функции), иначе выведется сообщение об ошибке!

 

В качестве исследуемой функции может выступать и встроенная математическая функция, например

 

fzero('sin', [2 4])

 

ans =

 

3.1416

 

Допустимы другие способы вызова fzero. Во-первых, функцию с исследуемой математической функцией можно задать при помощи указателя на нее:

 

>> x2=fzero(@myf,[-5 -1])

 

x2 =

 

-4.4934

 

Во-вторых, воспользовавшись функцией inline:

 

>> fun = inline('sin(x) - x.*cos(x)')

 

fun =

 

Inline function:

fun(x) = sin(x) - x.*cos(x)

 

>> xl = fzero(fun, -5)

 

xl =

 

-4.4934

 

В-третьих, создав анонимную функцию:

 

>> fun = @(x) sin(x)-x.*cos(x)

 

fun =

 

@(x)sin(x)-x.*cos(x)

 

>> xl = fzero(fun,-5)

 

xl =

 

-4.4934

 

Обращение к fzero с двумя выходными аргументами позволяет не только приближенно найти корень, но и получить значение функции в найденной точке.

 

>> [x2, f] = fzero(@myf, -2)

 

x2 =

 

6.2926e-009

 

 

f =

 

 

Важной особенностью fzero является то, что она вычисляет только те корни, в которых функция меняет знак, а не касается оси абсцисс. Найти корень уравнения х^2 = 0 при помощи fzero не удается:

 

>> fun=inline('х.^2');

>> x = fzero(fun, -0.1)

??? Error using ==> fzero at 301

FZERO cannot continue because user supplied inline object ==> fun

failed with the error below.

 

Error: The expression to the left of the equals sign is not a valid target for an assignment.

 

В данном примере fzero пыталась найти промежуток, на границах которого значения функции myf имеют различные знаки, что гарантировало бы существование корня на этом промежутке. Такой промежуток, естественно, определить не удалось, и fzero вывела сообщение об ошибке в командное окно.

‡агрузка...

 

Задание 3. Решите по два нелинейных алгебраических уравнения из табл. 1 с помощью функции fzero.

Порядок выполнения задания 1.

Для каждого из уравнений выполните е шаги 1-2.

1. Приравняйте уравнение к нулю, если это необходимо.

2. Постройте график левый части приравненного к нулю уравнения.

3. Выберете интервал локализации любого корня для первого уравнения. В контексте поиска корня нелинейного алгебраического уравнения интервал локализации – отрезок, на концах которого функция имеет разный знак. Кроме того, на этом отрезке функция должна быть монотонна. Данные условия, вытекающие из теоремы о нуле непрерывной функции, являются необходимыми и достаточными для существования единственного корня на отрезке.

4. Создайте inline функцию для левой части первого уравнения.

5. Вызовите функцию fzero, входными аргументами которой будут inline функция и интервал локализации.

6. Создайте анонимную функцию для левой части второго уравнения.

7. Вызовите функцию fzero, входными аргументами которой будут анонимная функция и произвольная точка в окрестности корня.

 

Табл. 1. К заданию 4.

3x4+4x3-12x2-5=0 ln(x)+(x+1)3=0
2x3-9x2-60x+1=0 x×2x=1
x4-x-1=0 x+cos(x)=1
2x4 - x2-10=0 x+lg(1+x)=1.5
3x4+8x3+6x2-10=0 lg(2+x)+2x=3
x4 -18x2+5x-8=0 2x+5x-3=0
x4+4x3-12x2+1=0 5x+3x =0
x4 - x3-2x2+3x-3=0 3ex=5x+2
3x4+4x3-12x2+1=0 5x=6x+3
3x4-8x3-18x2+2=0 2ex+5x-6=0
2x4-8x3+8x2-1=0 2arctg(x)-x+3=0
2x4+8x3+8x2-1=0 (x-3) × cos(x)=1
x4-4x3-8x2+1=0 xx= 20-9x
2x4-9x3-60x2+1=0 x × lg(x)=1
x5 +x2-5=0 tg3x=x-1
3x4+4x3-12x2-7=0 5x =1+e-x
3x4+8x3+6x2-11=0 5x =3-ex
x4 -18x3-10=0 arctg(x2+1/x)=x
3x4-8x3-18x2+2=0 tg(0.55x+0.1)=x2
x4 -18x -10=0 5x-6x =7
x4 +18x -10=0 5x-6x =3
x4 +18x3-6x2+x-10=0 5x =1+e-2x
x5 +12x3-6x2+x-10=0 7x-6x =2
3x5-8x3-18x2+2=0 5x =2+e-2x
x3 -18x -10=0 x×2x=3

 


1 | 2 | 3 | 4 |


При использовании материала, поставите ссылку на Студалл.Орг (0.011 сек.)