МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Государственное образовательное учреждение высшего профессионального образования
Санкт-Петербургский государственный университет технологии и дизайна
СЕВЕРО-ЗАПАДНЫЙ ИНСТИТУТ ПЕЧАТИ
Факультет: Полиграфических технологий и оборудования
Специальность: Информационные технологии в медиаиндустрии
Форма обучения: очная
Кафедра: Информационных и управляющих систем
Отчет
Дисциплина: Математика
Тема: Решение нелинейных уравнений и систем нелинейных уравнений
Выполнил:
Студент группы ИМ3 __________ Котикова К. В.
(подпись) (Ф.И.О.)
Руководитель:
________________ __________ Жихарева А. А.
(уч.степень, звание) (подпись) (Ф.И.О.)
Дата защиты работы ____________
Оценка _________________________
Санкт-Петербург
Задание 1
Найдите корни алгебраических уравнений f(x)=0
a) как корни полинома;
b) как корни нелинейного уравнения с помощью функции solve (если это возможно), fsolve, fzero, определив начальные приближения по разложению многочлена на простые сомножители.
Постройте график (или несколько графиков) функции и укажите на нем все действительные корни.
Уравнения:
Задание 2
Найдите все корни нелинейного уравнения f(x)=0, определив начальное приближение графически, с помощью функций solve (если это возможно), fsolve, fzero (необходимо воспользоваться каждой из этих функций). Если поиск всех коней невозможен, приведите обоснование.
Уравнения:
Задание 3
Найдите точное (если это возможно) и приближенное решения системы нелинейных уравнений, определив начальные приближения графически, с помощью функций solve, fsolve. Если удалось получить точное решение, то оцените абсолютную погрешность приближенного значния (абсолютной пограшностью решения называется модуль разности точного и приближенного решений)
Система:
Задание 1
а)
Описываем функцию в виде m-функции:
function y=f_1(x)
y=x.^6-3*x.^2+1;
Cкрипт:
syms x;
v=sym2poly(f_1_a(x)),
r=roots(v)
Command window:
>> v =
1.00 0 0 0 -3.00 0 1.00
r =
1.24
-1.24
0.59
-0.59
Для вычисления корней второй функции используем тот же скрипт, вписывем её в файл m-функции:
function y=f_2(x)
y=x.^4-7.3*x.^3+18.5*x.^2-3.1*x-2.99;
Command window:
>> v =
1.00 -7.30 18.50 -3.10 -2.99
r =
3.52
3.52
0.57
-0.31
b)
Функции уже описаны в файлах m-функций f_1.m и f_2.m
Скрипт, с использованием функции solve:
syms x;
r1=solve(f_1(x));
r1=double(r1)
r2=solve(f_2(x));
r2=double(r2)
x=-10:0.01:10;
f1=f_1(x);
f2=f_2(x);
f_01=f_1(r1);
f_02=f_2(r2);
plot(x,f2,r2,f_02,'ro')
axis auto
title('f(x)=x^4-7.3*x^3+18.5*x^2-3.1*x-2.99')
grid on
xlabel('x')
ylabel('y')
Command window
>> r1 =
1.24
-1.24
0.00
-0.00
0.59
-0.59
r2 =
3.52
3.52
0.57
-0.31
Скрипт, с использованием функции fsolve:
syms x;
x=[-2:1:2]
fsolve('f_1',x,optimset('fsolve')),
fsolve('f_2',x,optimset('fsolve'))
Comand window:
First-order optimality is less than options.TolFun.
ans =
-1.24 -0.59 0.59 1.24 1.24
Optimization terminated successfully:
First-order optimality is less than options.TolFun.
ans =
-0.31 -0.31 -0.31 0.57 0.57
>>
Скрипт, с использованием функции fsolve:
syms x;
%нахождение корней первой функции
fzero('f_1',-1) %в окрестности точки с ординатой равной -1
fzero('f_1',0) %в окрестности точки с ординатой равной 0
fzero('f_1',0.5) %в окрестности точки с ординатой равной 0.5
fzero('f_1',1) %в окрестности точки с ординатой равной 1
%нахождение корней второй функции
fzero('f_2',0) %в окрестности точки с ординатой равной 0
fzero('f_2',1) %в окрестности точки с ординатой равной 1
Comand window:
>> ans =
-1.24
ans =
-0.59
ans =
0.59
ans =
1.24
ans =
-0.31
ans =
0.57
>>
Задание 2.
Скрипт для построения графиков и нахождение корней c помощью функции solve:
syms x;
f=f_2_1(x);
R=double(solve(f)), %нахождение корней через функцию solve
f_r=f_2_1(R);
ezplot(f,[-50 50]); %построение графика заданной функции на промежутке (-50,50)
hold on
plot(R,f_r,'or') %отмечаем корни на графике
grid on
xlabel('x')
ylabel('y')
Command window:
>> R =
1.96
>> R =
0.81
С помощью функции fsolve:
syms x;
R=fsolve('f_2_1',2,optimset('fsolve'))
R2=fsolve('f_2_2',1,optimset('fsolve'))
Command window:
>> Optimization terminated successfully:
First-order optimality is less than options.TolFun.
R =
1.96
Optimization terminated successfully:
First-order optimality is less than options.TolFun.
R2 =
0.81
С помощью функции fzero:
syms x;
[R,f_R,e_flag,inform]=fzero('f_2_1',2)
[R,f_R,e_flag,inform]=fzero('f_2_2',1)
Command window:
>> R =
1.96 %найденный корень уравнения
f_R =
-0.00 %значение функции при найденном иксе
e_flag =
1.00 %найден интервал при котором функция принимает вещественные значения
inform =
iterations: 7.00 %количество выполненных интераций
funcCount: 7.00 %число обращений к функции
algorithm: 'bisection, interpolation' %методы, использованные при поиске корня
R = 0.81
f_R = 0
e_flag = 1.00
inform = iterations: 19.00
funcCount: 19.00
algorithm: 'bisection, interpolation'
Задание 3
С помощью функции solve
syms x y; [R_x,R_y]=solve('x*cos(x)-y=0','x^2+y^2=1')
R_x=double(R_x), R_y=double(R_y),
plot(R_x,R_y,'or',-R_x,-R_y,'ro'), hold on, grid on
f1=x*cos(x)-y; ezplot(f1,[-10 10]), hold on
f2=x^2+y^2-1; ezplot(f2,[-10 10])
Command window:
>> R_x =
.82845990609602149977807859564368
R_y =
.82845990609602149977807859564368*cos(.82845990609602149977807859564368)
R_x =
0.83
R_y =
0.56
С помощью функции fsolve
%описываем систему в отдельном м-файле:
function z=f_syst(x)
z=[x(1)*cos(x)-x(2); x(1)^2+x(2)^2-1];
Скрипт
syms x y;
R=fsolve('f_syst',[1;1],optimset('fsolve')),
R=fsolve('f_syst',[-1;-1],optimset('fsolve'))
Command window
>> Warning: Default trust-region dogleg method of FSOLVE cannot
handle non-square systems; switching to Gauss-Newton method.
(Type "warning off Optimization:fsolve:NonSquareSystem" to suppress this warning.)
> In C:\toolbox\optim\fsolve.m at line 215
In C:\Documents and Settings\User\Мои документы\Мои записи\Ксюха\Институт\Matlab\5 семестр\2 лаба\Матлаб_лаба2_отчеты и материалы\Zad_3.m at line 2
Optimizer appears to be converging to a minimum that is not a root:
Sum of squares of the function values is > sqrt(options.TolFun).
Try again with a new starting point.
R =
0.78
0.61
Warning: Default trust-region dogleg method of FSOLVE cannot
handle non-square systems; switching to Gauss-Newton method.
(Type "warning off Optimization:fsolve:NonSquareSystem" to suppress this warning.)
> In C:\toolbox\optim\fsolve.m at line 215
In C:\Documents and Settings\User\Мои документы\Мои записи\Ксюха\Институт\Matlab\5 семестр\2 лаба\Матлаб_лаба2_отчеты и материалы\Zad_3.m at line 3
Optimizer appears to be converging to a minimum that is not a root:
Sum of squares of the function values is > sqrt(options.TolFun).
Try again with a new starting point.
R =
-0.78
-0.61
Абсолютная погрешность:
0.05