Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Ввод нового элемента матрицы.

Поиск

%Executes on button press in pushbutton2. INPUT NEW MATRIX ELEMENT

function pushbutton2_Callback(hObject, eventdata, handles)

NumberRows=str2double(get(handles.edit1,'String'));

NumberColumns=str2double(get(handles.edit2,'String'));

i=str2double(get(handles.edit4,'String')); % номер строки элемента матрицы

j=str2double(get(handles.edit5,'String')); % номер столбца элемента матрицы

Matrix=str2num(get(handles.edit6,'String')); % считать матрицу из главного окна

   if i<=NumberRows   

       if j<=NumberColumns       

           Matrix(i,j)=str2double(get(handles.edit3,'String')); % считать новый элемент матрицы из окошка для него

           S=mat2str(Matrix);

           set(handles.edit6,'String',S); % вывести матрицу с учетом нового введенного элемента в главное окно интерфейса

           if j<NumberColumns

               b=j+1;

               a=i;

           else

               b=1;

               a=i+1;

           end

           S=sprintf('%g',a);

       set(handles.edit4,'String',S); % вывести следующий номер строки

           S=sprintf('%g',b);

      set(handles.edit5,'String',S); % вывести следующий номер столбца

           j=j+1;

           S=sprintf('%s',' ');

           set(handles.edit3,'String',S); % вывести пробел в окно для нового ввода элемента матрицы (то есть стереть предыдущий элемент в окне)

       end

       i=i+1;

   end 

end

Открытие из файла.

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles)

[f,p]=uigetfile('C:\MATLAB701\work\Book1\Primer_Matr2D.txt','Окно выбора');

OtkudaChitat=strcat(p,f);

f=fopen(OtkudaChitat,'rt');

%chitat is faila matricu StehiometrMatrix(n,m)

n=fscanf(f,'%d',1);

m=fscanf(f,'%d',1);

for i=1:n

   for j=1:m

       Matrix(i,j)=fscanf(f,'%g',1);

   end

end 

fclose(f);

S=mat2str(Matrix);

set(handles.edit6,'String',S);

S=n;

set(handles.edit1,'String',S);

S=m;

set(handles.edit2,'String',S);

end

 


 

ГЛАВА 2. ЗАДАЧИ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ

Программирование по блок-схемам

Для начинающих изучение курса вычислительной математики, традиционным является выполнение упражнений по блок схемам. Это позволяет развить ряд элементарных знаний, умений и навыков программирования и в том числе отладки несложных программ на МАТЛАБе.

Основные элементы блок-схем

Начало вычислительного процесса.                     Конец вычислений.

Начало
Конец

 


Блок обмена информацией;

ввод данных и вывод результатов.

 

Вычислительный блок;    

выполнение операции или группы

операций вычислительного процесса.

 

Алгоритмический блок;                                        Логический блок;

                                       выбор направления выполнения алгоритма

                                                                   в зависимости от условия.

 

 

Циклический блок;

организует многократное выполнение

вложенных блоков.

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

Программа - алгоритм решения задачи записанный на понятном машине языке в виде точно определенной последовательности операций - программы для ЭВМ. Составление программ (программирование) обычно производится с помощью промежуточного (алгоритмического) языка. В алгоритмах и программах для обозначения данных используются переменные, которым даются уникальные имена (идентификаторы). Алгоритмы будем представлять в виде блок-схем, а программы записывать на языке программирования MATLAB. Программа в MATLAB оформляется в виде М-файла и осуществляет необходимые операции над массивами. Массив представляет собой набор переменных с одним именем, одним типом и разными индексами. Каждая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива.

2
Блок-схема 1. Метод деления пополам

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

По блок-схеме 1 составлена программа. Она состоит из следующих частей:

GLAV главная управляющая функция, вызывает остальные по мере необходимости;

DATA содержит исходные данные, объявленные как глобальные переменные. Эти же переменные объявлены как глобальные в GLAV. После вызова в GLAV функции DATA эти переменные получают значения (инициируются);

fun _ BS _1 функция осуществляющая вычисления в соответствии с блок-схемой 1;

f функция указанная в блок-схеме как f (x)= x 2 -5;

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

function DATA %исходные данные

global a b eps n_plot_dots; %глобальные переменные

a=2;

b=3;

eps=0.0001;%точность расчета

n_plot_dots=101;%количество точек графика

end

 

function [ fx ] = f(x)%функция корни f(x)=0 ищем

fx=x.^2-5;%поставлена точка для поэлемент. выполн.-я действий

end

 

function [ x, fx ] = fun_BS_1(a, b, eps)

fa=f(a);

for i=1:100 %цикл со счетчиком ограничивает нас 100 повторов

x=(a+b)/2;

if fa*f(x)<0

   b=x;

else

   a=x;

end % if

if abs(b-a)>eps %проверка условия прерывания цикла

   i %вывод числа выполненных итераций

   break %прерывание цикла

end% if

end % for i

x=(a+b)/2;

fx=f(x);

end % function

 

function GLAV_BS_1 %главная исполняемая программа

global a b eps x fx n_plot_dots;

DATA;%задаются исходные данные из файла DATA

[ x, fx ] = fun_BS_1(a, b, eps);%вызов функции

REPORT;%вызов вывода результатов

end

 

function REPORT %вывод результатов

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);%задаем массив из нулей нужного

fmas=zeros(n_plot_dots);% размера

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);%функция num2str

disp(['b = ' num2str(b,'%10.5f') ]);% преобразует число в

disp(['eps = ' num2str(eps,'%10.5f') ]);% строку символов,

disp('Results'); % указываем '%10.5f' формат вывода (число с

disp(['x = ' num2str(x,'%10.5f') ]);% заданным количеством

disp(['fx = ' num2str(fx,'%10.5f') ]);%знаков после запятой

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i         x           fx '); 

disp('_____________________________')

i=0;

for i=1:length(xmas)%вывод таблицы результатов, строки

xx=xmas(i);%формируются командой sprintf, указаны

ffx=fmas(i);%форматы вывода перемнных и табуляция между

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));%ними

end %for

plot(xmas,fmas,'r.');%вывод графика функции

grid on;

xlabel('x');

ylabel('y');

title('Block shem #1');

end

 

Блок - схема 2. Второй вариант метода деления пополам

Текст программы к блок-схеме 2.

function DATA

global a b eps n_plot_dots;

a=2;

b=3;

eps=0.0001;

n_plot_dots=101;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ x, fx ] = fun_BS_2(a, b, eps)

fa=f(a);

for i=1:100 %цикл со счетчиком ограничивает число итераций

if abs(b-a)>eps % проверка условия продолжения

   x=(a+b)/2;

   if fa*f(x)<0

       b=x;

   else

       a=x;

   end %if

else % вариант требующий прерывания цикла

   i % вывод числа выполненных итераций

   break;% прерывание цикла

end %if

end %for i

x=(a+b)/2;

fx=f(x);

end % function

 

function GLAV_BS_2

global a b eps x fx n_plot_dots;

DATA;

[ x, fx ] = fun_BS_2(a, b, eps);

REPORT;

end

function REPORT

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);

fmas=zeros(n_plot_dots);

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['x = ' num2str(x,'%10.5f') ]);

disp(['fx = ' num2str(fx,'%10.5f') ]);

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i         x           fx '); 

disp('_____________________________')

i=0;

for i=1:length(xmas)%подготовка таблицы аргумента и функции

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;%покрытие сеткой

xlabel('x');%подписи к осям

ylabel('y');

title('Block shem #2');%подпись к графику

end

 

Блок-схема 3. Метод касательных (Ньютона)

function DATA

global a b eps n_plot_dots;

a=2;

b=3;

eps=0.0001;

n_plot_dots=101;

end

 

function [ fx ] = f(x)%функция f(x)=0 корни ее ищем

fx=x.^2-5;

end

 

function [ fpx ] = fp(x)%производная от функции

fpx=2*x;

end

 

function [ x, fx ] = fun_BS_3(a, b, eps)

h=b-a;

x=a;

for i=1:100

if abs(h)>eps

   h=f(x)/fp(x);

   x=x-h;

   if and(a<x, x<b)% если a<x<b продолжить

   else

       x=b;

   end %if

else % вариант требующий прерывания цикла

   i

   break;%прерывание цикла

end %if

end %for i

fx=f(x);

end % function

 

function GLAV_BS_3

global a b eps x fx n_plot_dots;

DATA;

[ x, fx ] = fun_BS_3(a, b, eps);

REPORT;

end

 

function REPORT

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);

fmas=zeros(n_plot_dots);

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['x = ' num2str(x,'%10.5f') ]);

disp(['fx = ' num2str(fx,'%10.5f') ]);

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i       x         fx '); 

disp(' __________________________________')

i=0;

for i=1:length(xmas)

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #3');

end

Блок - схема 4

Программу к блок-схеме 4 расположим перед блок-схемой.

function DATA

global x dx eps;

x=3;

dx=0.1;

eps=0.0001;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ res ] = fun_BS_4(x, dx, eps)

i=1;

d1=(f(x+dx)-f(x))/dx;

for j=1:100

dx=dx/2;

if i==1

   d2=(f(x+dx)-f(x))/dx;

   i=2;

else

   d1=(f(x+dx)-f(x))/dx;

   i=1;

end %if

if abs(d1-d2)>eps

else

   j

   break;

end %if

end %for j

if i==1

res=d1;

else

res=d2;

end %if

end % function

 

function GLAV_BS_4

global x dx eps res;

DATA;

[ res ] = fun_BS_4(x, dx, eps);

REPORT;

end

 

function REPORT

global x dx eps res;

disp('Block scheme #4');

disp('Arguments');

disp(['x = ' num2str(x,'%10.5f') ]);%

disp(['dx = ' num2str(dx,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Result');

disp(['res = ' num2str(res,'%10.5f') ]);

end

 

Блок - схема 5

function DATA

global a b eps n_plot_dots;

a=1;

b=3;

eps=0.0001;

n_plot_dots=101;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

function [ x, fx ] = fun_BS_5(a, b, eps)

x=a;

f1=f(a);

h=b-a;

for i=1:100

if abs(h)>eps

   h=h/3;

   for j=1:100

       x=x+h;

       f2=f(x);

       if f1*f2>0

       else

           j

           break;

       end %if

   end %for j

   x=x-h;

else

   i

   break;

end %if

end %for

x=x-h/2;

fx=f(x);

end % function

 

function GLAV_BS_5

global a b eps x fx n_plot_dots;

DATA;

[ x, fx ] = fun_BS_5(a, b, eps);

REPORT;

end

 

function REPORT

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);

fmas=zeros(n_plot_dots);

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['x = ' num2str(x,'%10.5f') ]);

disp(['fx = ' num2str(fx,'%10.5f') ]);

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i       x         fx '); 

disp(' ________________________________')

i=0;

for i=1:length(xmas)

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #5');

end

Блок - схема 6

function DATA

global a b eps n_plot_dots;

a=1;

b=3;

eps=0.0001;

n_plot_dots=101;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ x, fx ] = fun_BS_6(a, b, eps)

h=(b-a)/2;

x=a;

fa=f(x);

for i=1:100

if abs(h)>eps

   x=x+h;

   fx=f(x);

   if fa*fx<0

       x=x-h;

   else

       fa=fx;

   end %if

   h=h/2;

else

   i

  break;

end %if

end %for i

fx=f(x);

end % function

 

function GLAV_BS_6

global a b eps x fx n_plot_dots;

DATA;

[ x, fx ] = fun_BS_6(a, b, eps);

REPORT;

end

 

function REPORT

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);

fmas=zeros(n_plot_dots);

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['x = ' num2str(x,'%10.5f') ]);

disp(['fx = ' num2str(fx,'%10.5f') ]);

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i       x         fx '); 

disp(' ________________________________')

i=0;

for i=1:length(xmas)

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #6');

end

Блок - схема 7

function DATA

global a b eps n_plot_dots;

a=-1;

b=2;

eps=0.0001;

n_plot_dots=101;

end

 

function [ x, fx ] = fun_BS_7(a, b, eps)

x=a;

f1=f(x);

h=(b-a)/3;

for i=1:100

if abs(h)>eps

   x=x+h;

   if x>b

       x=b;

   end %if

   f2=f(x);

   if f2>f1

       h=-h/3;

   end %if

   f1=f2;

else

   i

   break;

end %if

end % for i

x=x+2*h;

fx=f(x);

end % function

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function GLAV_BS_7

global a b eps x fx n_plot_dots;

DATA;

[ x, fx ] = fun_BS_7(a, b, eps);

REPORT;

end

 

function REPORT

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);

fmas=zeros(n_plot_dots);

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['x = ' num2str(x,'%10.5f') ]);

disp(['fx = ' num2str(fx,'%10.5f') ]);

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i       x         fx '); 

disp(' ________________________________')

i=0;

for i=1:length(xmas)

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #7');

end

Блок - схема 8

function DATA

global a b eps n_plot_dots;

a=1;

b=3;

eps=0.0001;

n_plot_dots=101;

end

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ x, fx ] = fun_BS_8(a, b, eps)

n=log((b-a)/eps)/log(2);

fa=f(a);

i=0;

for j=1:100

if i<n

   x=(a+b)/2;

   fx=f(x);

   if fa*fx<0

       b=x;

   else

       a=x;

   end %if

   i=i+1;

else

   j

   break;

end %if

end %for

fx=f(x);

end % function

 

function GLAV_BS_8

global a b eps x fx n_plot_dots;

DATA;

[ x, fx ] = fun_BS_8(a, b, eps);

REPORT;

end

 

function REPORT

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);

fmas=zeros(n_plot_dots);

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['x = ' num2str(x,'%10.5f') ]);

disp(['fx = ' num2str(fx,'%10.5f') ]);

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i       x         fx '); 

disp(' ________________________________')

i=0;

for i=1:length(xmas)

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #8');

end

Блок - схема 9

function DATA

global x0 y0 xk n eps;

x0=1;

y0=1;

xk=2;

eps=0.01;

n=10;

end

 

function [ fxy ] = f(x,y)

fxy=x*y;

end

 

function [ xmas, fmas, Jres ] = fun_BS_9(x0,y0,xk,n, eps)

yk=0;

y=2*eps;

for i=1:100

if abs(yk-y)>eps

   h=(xk-x0)/n;

   yk=y;

   x=x0;

   y=y0;

   n=n*2;

   for j=1:100

       if x<xk

           y=y+f(x,y)*h;

           x=x+h;

           xmas(j)=x;

           fmas(j)=y;

           Jres=j;

       else

           j               

           break;

       end %if

   end %for j

   n=n*2;

else

   i

   break;

end %if

end % for i

disp ('OK BS 9');

end % function

function GLAV_BS_9

global x0 y0 xk n xmas fmas Jres eps;

DATA;

[ xmas, fmas, Jres ] = fun_BS_9(x0,y0,xk,n,eps);

REPORT;

end

 

function REPORT

global x0 y0 xk n eps xmas fmas Jres;

disp('Arguments');

disp(['x0 = ' num2str(x0,'%10.5f') ]);

disp(['xk = ' num2str(xk,'%10.5f') ]);

disp(['y0 = ' num2str(y0,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['Jres = ' num2str(Jres,'%10.5f') ]);

disp(' i       x         fx '); 

disp(' ________________________________')

i=0;

for i=1:Jres

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.5f\t%10.5f\t %10.5f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #9');

end

Блок - схема 10

function DATA

global a b eps n_plot_dots;

a=-1;

b=2;

eps=0.0001;

n_plot_dots=101;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ x, fx ] = fun_BS_10(a, b, eps)

x1=a;

x4=b;

Z=1/3;

for i=1:100

x2=x1+Z*(x4-x1);

x3=x4-Z*(x4-x1);

F2=f(x2);

F3=f(x3);

if F2<F3

   x4=x3;

else

   x1=x2;

end %if

if abs(x4-x1)>2*eps

else

   i

   break;

end %if

end %for i

x=(x1+x4)/2;

fx=f(x);

end % function

 

function GLAV_BS_10

global a b eps x fx n_plot_dots;

DATA;

[ x, fx ] = fun_BS_10(a, b, eps);

REPORT;

end

 

function REPORT

global a b eps x fx n_plot_dots;

xmas=zeros(n_plot_dots);

fmas=zeros(n_plot_dots);

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp('Results');

disp(['x = ' num2str(x,'%10.5f') ]);

disp(['fx = ' num2str(fx,'%10.5f') ]);

h=(b-a)/(n_plot_dots-1);

for i=1:n_plot_dots

if i==1

   xmas(i)=a;

else

   xmas(i)=xmas(i-1)+h;

end %if

fmas(i)=f(xmas(i));

end

disp(' i       x         fx '); 

disp(' ________________________________')

i=0;

for i=1:length(xmas)

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.3f\t%10.3f\t %10.3f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #10');

end

Блок - схема 11

function DATA

global x0 y0 xk n;

x0=0;

y0=1;

xk=1;

n=10;

end

 

function [ fxy ] = f(x,y)

fxy=x*y;

end

 

function [ xmas, fmas, Jres ] = fun_BS_11(x0,y0,xk,n)

h=(xk-x0)/n;

x=x0;

y=y0;

for i=1:100

if x<xk

   f0=f(x,y);

   x1=x+h/2;

   y1=y+f0*h/2;

   y=y+f(x1,y1)*h;

   x=x+h;

   xmas(i)=x;

   fmas(i)=y;

   Jres=i;

else       

   i

   break;

end %if

end %for i

disp('OK BS 11');

end % function

 

function GLAV_BS_11

global x0 y0 xk n xmas fmas Jres;

DATA;

[ xmas, fmas, Jres ] = fun_BS_11(x0,y0,xk,n);

REPORT;

end

 

function REPORT

global x0 y0 xk n xmas fmas Jres;

disp('Arguments');

disp(['x0 = ' num2str(x0,'%10.5f') ]);

disp(['xk = ' num2str(xk,'%10.5f') ]);

disp(['y0 = ' num2str(y0,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp('Results');

disp(' i       x         fx '); 

disp(' ________________________________')

i=0;

for i=1:Jres

xx=xmas(i);

ffx=fmas(i);

disp(sprintf('%10.5f\t%10.5f\t %10.5f',i,xx,ffx));

end %for

plot(xmas,fmas,'r.');

grid on;

xlabel('x');

ylabel('y');

title('Block shem #11');

end

Блок - схема 12

function DATA

global a b eps n;

a=1;

b=2;

eps=0.0001;

n=10;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ s ] = fun_BS_12(a, b, n, eps)

s1=0;

s=2*eps;

for i=1:100

if abs(s-s1)>eps

   s1=s;

   h=(b-a)/n;

   x=a+h/2;

   s=0;

   for j=1:100

       if x<b

           s=s+f(x);

           x=x+h;

       else

           j

           break;

       end %if

   end %for j

   s=s*h;

   n=n*2;

else

   i

   break;

end %if

end %for i

end % function

 

function GLAV_BS_12

global a b eps s n;

DATA;

[ s ] = fun_BS_12(a, b, n, eps)

REPORT;

end

function REPORT

global a b eps s n;

disp('BS 12');

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['eps = ' num2str(eps,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp('Results');

disp(['s = ' num2str(s,'%10.5f') ]);

end

Блок - схема 13

function DATA

global a b n;

a=1;

b=2;

n=10;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ s, s1 ] = fun_BS_13(a, b, n)

h=(b-a)/n;

s=0;

i=1;

for i=1:100

if i<=n

   x=a+(i-1)*h;

   s=s+f(x);

   i=i+1;

else

   i

   break;

end %if

end %for i

s1=0;

for x=a:h:b-h

s1=s1+f(x);

end %for i

s=s*h;

s1=s1*h;

end % function

 

function GLAV_BS_13

global a b s s1 n;

DATA;

[ s, s1 ] = fun_BS_13(a, b, n);

REPORT;

end

 

function REPORT

global a b s s1 n;

disp('BS 13');

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp('Results');

disp(['s = ' num2str(s,'%10.5f') ]);

disp(['s1 = ' num2str(s1,'%10.5f') ]);

end

 

Блок - схема 14

function DATA

global a b n;

a=1;

b=2;

n=10;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ s, s1 ] = fun_BS_14(a, b, n)

h=(b-a)/n;

s=0;

x=a+h/2;

for i=1:100

s=s+f(x);

x=x+h;

if x<b

else

   i

   break;

end %if

end %for i

s1=0;

for x=a+h/2:h:b

s1=s1+f(x);

end %for i

s=s*h;

s1=s1*h;

end % function

 

function GLAV_BS_14

global a b s s1 n;

DATA;

[ s, s1 ] = fun_BS_14(a, b, n);

REPORT;

end

 

function REPORT

global a b s s1 n;

disp('BS 14');

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp('Results');

disp(['s = ' num2str(s,'%10.5f') ]);

disp(['s1 = ' num2str(s1,'%10.5f') ]);

end

Блок - схема 15

function DATA

global a b n;

a=1;

b=2;

n=10;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ s, s1 ] = fun_BS_15(a, b, n)

h=(b-a)/n;

s=0;

x=a+h/2;

for i=1:100

if x<b

   s=s+f(x);

   x=x+h;

else

   i

   break;

end %if

end %for i

s1=0;

for x=a+h/2:h:b

s1=s1+f(x);

end%for i

s=s*h;

s1=s1*h;

end % function

 

function GLAV_BS_15

global a b s s1 n;

DATA;

[ s, s1 ] = fun_BS_15(a, b, n);

REPORT;

end

 

function REPORT

global a b s s1 n;

disp('BS 15');

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp('Results');

disp(['s = ' num2str(s,'%10.5f') ]);

disp(['s1 = ' num2str(s1,'%10.5f') ]);

end

Блок - схема 16

function DATA

global a b n;

a=1;

b=2;

n=10;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ s, s1 ] = fun_BS_16(a, b, n)

h=(b-a)/n;

s=0;

i=0;

for j=1:100

x=a+i*h;

s=s+(f(x)+f(x+h))/2;

i=i+1;

if i<=n-1

else

   j

   break;

end %if

end % for j

s1=0;

for i=0:n-1

x=a+i*h;

s1=s1+(f(x)+f(x+h))/2;

end % for i

s=s*h;

s1=s1*h;

end % function

 

function GLAV_BS_16

global a b s s1 n;

DATA;

[ s, s1 ] = fun_BS_16(a, b, n);

REPORT;

end

 

function REPORT

global a b s s1 n;

disp('BS 16');

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp('Results');

disp(['s = ' num2str(s,'%10.5f') ]);

disp(['s1 = ' num2str(s1,'%10.5f') ]);

end

 

Блок - схема 17

function DATA

global a b n;

a=1;

b=2;

n=10;

end

 

function [ fx ] = f(x)

fx=x.^2-5;

end

 

function [ s, s1 ] = fun_BS_17(a, b, n)

h=(b-a)/n;

x=a;

s=0;

i=2;

for j=1:100

s=s+f(x)+4*f(x+h)+f(x+2*h);

x=x+2*h;

i=i+2;

if i<=n

else

   j

   break;

end %if

end %for j

x=a;

s1=0;

for i=0:n-1

s1=s1+f(x)+4*f(x+h)+f(x+2*h);

x=x+2*h;

end %for i

s=h*s/3;

s1=s1*h/3;

end % function

 

function GLAV_BS_17

global a b s s1 n;

DATA;

[ s, s1 ] = fun_BS_17(a, b, n);

REPORT;

end

 

function REPORT

global a b s s1 n;

disp('BS 17');

disp('Arguments');

disp(['a = ' num2str(a,'%10.5f') ]);

disp(['b = ' num2str(b,'%10.5f') ]);

disp(['n = ' num2str(n,'%10.5f') ]);

disp('Results');

disp(['s = ' num2str(s,'%10.5f') ]);

disp(['s1 = ' num2str(s1,'%10.5f') ]);

end

Погрешности

Основная задача теории погрешностей состоит в оценке погрешности результата вычислений при известных погрешностях исходных данных.



Поделиться:


Последнее изменение этой страницы: 2021-03-09; просмотров: 105; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.238.67 (0.011 с.)