Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 3 Вычисление нулей функции .doc
Скачиваний:
9
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

3)Вычисление нулей функции с заданной точностью:

-------------- fzero('функция',x,eps) --------

Для Примера 4

x4=fzero('0.25*x+sin(x)-1',5,0.00001)

x4=fzero('0.25*x+sin(x)-1',[5 6],0.00001)

-------------------------------------------------------------

4)Вычисление нулей функции с п\п функцией

Функцию y=0.25*x+sin(x)-1 мы оформили как М-функцию fun5.m и сохранили в отдельном файле с именем fun5.m в той же директории, что и вызывающая её программа.

Под функциями понимаются как встроенные функции, например sin(x) или ехр(х),так и функции пользователя, например f(x), задаваемые как M-файлы-функции. Например, функция fe=@exp; сохранена как M-файл.

function f=fun5(x); функция; fun5 – имя функции

f=0.25*x+sin(x)-1;

x1=fzero('fun5',[0.5 1]) на интервале

>> x1=fzero('fun5',[0.5 1])

x1 =

0.8905

Или

для функции вместо апострофов ставим собаку @

x2=fzero(@fun5,[2 3]) на интервале

>> x2=fzero(@fun5,[2 3])

x2 =

2.8500

x3=fzero('fun5',6) в окрестности точки

>> x3=fzero('fun5',6)

x3 =

5.8128

2.Функция roots

Вычисление корней полинома

Пример 1

Найдем нули (корни) функции y=x2-5x+6

y=[1 -5 6]; %матрица коэффициентов полинома x2-5x+6=0

x=roots(y);

vpa(x,2)

ans =

3.0

2.0

Пример 2

Полином x3-9*x2+26*x-24=0

y=[1 -9 26 -24]; %матрица коэффициентов

x=roots(y);

vpa(x,2)

%ответ: 4 3 2

Пример 3

Найти корни полинома 2х4 - 8х3 + 8х2 - 1

disp('корни полинома 2х^4 - 8х^3 + 8х^2 - 1')%печатает комм.

%без графика:

p=[2 -8 8 0 -1];

roots(p)

%Ответ 2.3066; 1.5412; 0.4588; -0.3066

с графиком:

p=[2 -8 8 0 -1];p-вектор, элементы которого являются коэффициентами полинома

x=-1:0.1:3; в порядке уменьшения степеней, X может быть матрицей или вектором

y=polyval(p,x); возвращает значения полинома в точках, заданных в массиве Х

plot(x,y,'-k'),grid

roots(p)%Ответ 2.3066; 1.5412; 0.4588; -0.3066

___________________________________________________

3.Функция solve

Решение уравнений в символьном виде - функция solve

Кетков стр 472

Для решения систем нелинейных уравнений следует также использовать функцию solve из пакета Symbolic Math Toolbox. Эта функция способна выдавать результат в символьной форме, а если такого нет, то она позволяет получить решение в численном виде.

Пример 1

решение квадратного уравнения в общем виде

syms a b c x;

f=a*x^2+b*x+c

solve(f)

>> syms a b c x;

f=a*x^2+b*x+c

solve(f)

f =

a*x^2 + b*x + c

ans =

-(b + (b^2 - 4*a*c)^(1/2))/(2*a)

-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

>>

решение квадратного уравнения в численном виде

solve('x^2-5*x+6=0',x)

>> solve('x^2-5*x+6=0',x)

ans =

2

3

или так:

S=solve('x^2-5*x+6=0',x)

Пример 2

решение кубического уравнения в численном виде

syms x; %описание символьных переменных

S=solve('x^3-9*x^2+26*x-24=0',x)

>> S=solve('x^3-9*x^2+26*x-24=0',x)

S =

2

3

4

Пример 2

2.1

Система двух уравнений с двумя неизвестными

syms x y; %описание переменных в символьном виде

solve('x+y=3','x*y^2=4',x,y)% выдает только количество корней

%Переменная S: более одного ответа; распечатаем корни

S=solve('x+y=3','x*y^2=4',x,y)%выдает только количество корней

S.x %указание на распечатку значений для x: (x1=1; x2=4)

S.y %указание на распечатку значений для y: (y1=2; y2=-1)

%слово ans= при распечатке означает значение безымянной переменной

%Ответ:(1; 2) или (4; -1)

Pause

2.2

Система двух уравнений с двумя неизвестными

syms x y;

t=solve('2*x+5*y=26','3*x-y=5',x,y)

t.x

t.y

%если в функциях нет равенства , то по умолчанию считается =0

disp('решения для СЛУ с 2 неизвестными, заданными в символьном виде')

syms x y;

t=solve('2*x+5*y-26','3*x-y-5',x,y)%нет точки с запятой,

%поэтому распечатает количество ответов.

%печать x и y (можно просто сразу печатать ответ t.x t.y)

X=t.x %значения корней будет присвоено переменным X и Y

Y=t.y

Пример 3

Решение трех уравнений с тремя неизвестными

1).

syms x y z;

d=solve('0.1*x-0.04*y-0.13*z=-0.15','-0.04*x-0.34*y+0.05*z=0.31','-0.13*x+0.05*y+0.63*x=0.37',x,y,z);

R=[d.x;d.y;d.z] %возвращает значения x,y,z.

%ответ: R = 0.81135 -0.71347 1.9975

disp(vpa(R,3))

%или

R=vpa(R,3) %выводит 3 значащих цифры (без учета точки и знаков + -)

2).

syms x y z ;

d=solve('2*abs(x*y-3*y-4*x+12)+z=-23.16','z=-24.08','z-(x^2)-(y^2)+6*x+8*y=0',x,y,z)

dxyz=[d.x;d.y;d.z] %вывод без формата

XYZ=vpa(dxyz,3)%количество значащих цифр числа = 3

%(без точки и знаков + -)

%ответ: x=2.32; y=3.32; z=-24.1

Пример 4

y=x^3-1

syms x y; %описание символьных переменных

solve(x^3-1,x)

ans =

1

- 1/2 - (3^(1/2)*i)/2

- 1/2 + (3^(1/2)*i)/2

или

solve('x^3-1=0',x)

Пример 5

solve('x^2-5*x+6=0',x) %ответ: 2 и 3

ans =

2

3

Пример 6

Решить систему нелинейных уравнений

S=solve('x+y=3','x*y^2=4',x,y) %без ; возвращает количество корней (2 пары),

%далее S.x и S.y возвращают значения x и y.

S.x

S.y

>> S=solve('x+y=3','x*y^2=4',x,y)

S =

x: [2x1 sym]

y: [2x1 sym]

>> S.x

S.y

ans =

1

4

ans =

2

-1

% возвращает две пары ответов (1;2)или(4;-1)

Пример 7

solve('2^x=8',x) %ответ: 3

Пример 8

Найти корни уравнения 0.25*x + sin(x) -1=0

solve('0.25*x + sin(x) -1)

ans =

0.89048708074438001001103173059554

_______________________________________________________

4. Решение систем линейных и нелинейных уравнений к лабораторной работе №2