########################################### No. 5.1.1 ##########################

clear; 
format short;
p = [ -1 4 -1 ] ; # Задаем массив с коэффициентами уравнения (нужно для roots)
X = 0:0.001:4 ;   # Массив для графика 

# Функция для построения графика
function Y1 = funcNo511(X)     
    Y1 = -(X.^2) + 4*X - 1 ;
end

 # Встроенная функция поиска нулей функции 
f1zero = roots(p)                      

 # Рисуем граффик функции (для оценки)
plot(X,funcNo511(X)) ;    grid on ;

########################################### No. 5.1.2 ########################## #f(x) = 0.2e^x - 20
clear;
 X = 4:0.001:5 ;
 x0 = 100 ;
 
########################### Болше не нужно ##############################################
# Функция для графика
#function Y2 = funcNo512(X)                      
#    for k = 1:1:size(X)(1,2)     ;                # Т.к. функция exp() работает непонятно используются
#        #for l = 1:1:size(X)(1,1)                 # циклы. Два цикла работают не хуже одного
#            Y2(1,k) = 0.2*e^X(1,k) - 20 ;
#        #end
#    end
#end
#########################################################################################

funcNo512 = @ (X) (0.2*e.^X - 20) ;  # Анонимная функция (аналог inline (inline считается устаревшей в версии Matlab 7)) 

f2zero = fzero(funcNo512,[4 5])

figure;
plot(X,funcNo512(X));  grid on;

########################################### No. 5.2.1 ##########################
clear ; 
format long e;

 dx = 0.01 ;                        # Шаг диффиринцирования                     
 X  = -2:dx:2 ;                       
 Yq = @ (X) (X.^2 - e.^X) ;           # Подынтегральная функция в виде функции(нужно для метода Симпсона)
 Y  = (X.^2 - e.^X) ;                 # Подынтегральная функция
 Iq = quad(Yq,-2,2)                   # Численное взятие интенрала по методу Симпсона
 Itr= trapz(X,Y)                      # Численное взятие интеграла по методу трапеций
format short; 

########################################### No. 5.2.2 ##########################
clear ; 
pkg load symbolic;                    # Подгружает Symbolic Toolbox Package (см. http://octave.sourceforge.net/symbolic/overview.html )

syms X ;
 Y  = sym('(X^2 - e^X)') ;

 I = int(Y,X,-2,2) 
 
########################################### No. 5.3 ############################
clear; 
#pkg load symbolic;                    # Подгружает Symbolic Toolbox Package (см. http://octave.sourceforge.net/symbolic/overview.html )

 xn = 0  ;
 xk = pi ;
 yn = 0  ;
 yk = pi ; 
 zn = 0  ;
 zk = pi ; 

 Integ = @ (X,Y,Z) ( cos(X.^2 - Y.^2 + sin(Z) )  )  # Задаем подынтегральную функцию
 triplequad(Integ,xn,xk,yn,yk,zn,zk)                # Численно вычисляем тройной интеграл 
########################################### No. 5.4.1 ##########################
clear;

################################## Отступление #################################
# Решить уравнение методами половинного деления, итераций, секущих и 
# касательных с точностью 0,001.

#                           4
#                      x⋅log (10)
#                     ───────────  = 3
#                        4
#                     log (x - 1)

###################################### Ебануться,  я не понял %%%%%%%%%%%%%%%%%%
# Википедия говорит, что Метод бисекции или метод деления отрезка пополам — 
# простейший численный метод для решения нелинейных уравнений вида f(x)=0. 
# Предполагается только непрерывность функции f(x). Поиск основывается на теореме 
# о промежуточных значениях.
# https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%B1%D0%B8%D1%81%D0%B5%D0%BA%D1%86%D0%B8%D0%B8
# А так же приводит псевдокод
# ##############################################################################
# Пусть
#
#    xn — начало отрезка по х;
#    xk — конец отрезка по х;
#    xi — середина отрезка по х;
#    epsyn = epsy — требуемая точность вычислений по y (заданное приближение интервала [a; b] : b — a к нулю).
#
# Тогда алгоритм метода бисекции можно записать в псевдокоде следующим образом:
#
#    Начало.
#        Ввод xn, xk, epsyn.
#        Если F(xn) = 0, то Вывод (корень уравнения — xn).
#            Если F(xk) = 0, то Вывод (корень уравнения — xk).
#        dx := xk — xn.
#        Пока b — a > epsy повторять:
#            dx := dx / 2;
#            xi := xn + dx;
#            если sign(F(xn)) ≠ sign(F(xi)), то xk := xi;
#            иначе xn := xi.
#        конец повторять
#        Вывод (Найден корень уравнения — xi с точностью по y — epsy).
#    Конец.
# ##############################################################################

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Непонятный, незаконченый код %%%%%%%%%%%%%%%%%%%
%xn = -10 ;
% xk = 10  ;
% epsyn = 0.001 ;
% epsxn = 0.001 ;
% X = xn:epsxn:xk ;
%    func541 = @ (X) (x / (log10(x-1)^4) - 3)   # Зададим f(x) Как функцию (func541(X))
%# ######
%    if func541(xn) == 0 
%        printf('корень уравнения это xn = %f/n',xn) 
%        if func541(xk) == 0
%             printf('корень уравнения это xk = %f/n',xk) 
%        end
%    end
%dx = xk - xn ;
%while (b - a) > epsyn    
%   dx = dx / 2 ;
%   X(1,i) = xn  
%end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
clear;

xn = -10 ;
xk = 10 ;
epsya = 0.1 ;

function Fx = func541(X)
    Fx = ((X / (log10(X - 1).^4)) - 3) ;
end

%func541 = @ (X) ((X / (log10(X - 1).^4)) - 3)
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    figure;
    X = -10:0.001:10 ;
    plot(X,func541(X))
    
    
    
if func541(xn) == 0 
    printf('корень уравнения это xn = %f/n',xn) 
    if func541(xk) == 0
         printf('корень уравнения это xk = %f/n',xk) 
    end
end
dx = xk - xn ;
a = func541(xn);
b = func541(xk);
xi = xn ;
while (b - a) > epsya
    dx = dx / 2 ;
    xi = xn + dx ;
    if ( sign(func541(xn) ~= sign(func541(xi)))  )
        xk = xi ;
    else 
        xn = xi ;
    end
end
printf('Найден корень уравнения — xi = %f с точностью по y — epsy = %f/n',xi,epsya)  
