С помощью функции fsolve




МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное образовательное учреждение высшего профессионального образования

Санкт-Петербургский государственный университет технологии и дизайна

СЕВЕРО-ЗАПАДНЫЙ ИНСТИТУТ ПЕЧАТИ

 

Факультет: Полиграфических технологий и оборудования

Специальность: Информационные технологии в медиаиндустрии

Форма обучения: очная

Кафедра: Информационных и управляющих систем

 

 

Отчет

Дисциплина: Математика

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

Выполнил:

Студент группы ИМ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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-13 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: