Исследование метода продолжения решения по параметру для нелинейных САУ

курсовая работа

2.1 Общие сведения и требования к ПО и описание логической структуры

ПО состоит из следующих файлов: mpr. m, prog. m, funf. m, funj. m. Программы, реализующие метод, разработаны в среде МаtLab, предназначенной для выполнения математических операций. Программа состоит из программы-функции mpr. m, которая описывает метод, программы с данными - основная программа prog. m и двух подпрограмм-функций funf. m - для нахождения корней системы уравнений; funj. m - для нахождения матрицы Якоби. Рассмотрим их подробнее.

Функциональное назначение

Программа предназначена для решения систем нелинейных алгебраических уравнений в среде МаtLab методом продолжения решения по параметру.

Используемые переменные:

t - время выполнения итерационного процесса;

x - вектор начального приближения к решению;

n - размерность вектора;

m - номер итерационного процесса;

it - счетчик итераций.

Входные параметры:

funf - формальное имя программы, которое дает возможность вычислить корни нелинейных САУ.

funj - формальное имя программы, которое дает возможность вычислить матрицу Якоби.

x0 - начальное приближение собственного вектора;

dt - приращение времени;

edop - заданная допустимая ошибка;

trace - установка режима вывода на экран;

Выходные параметры:

tout - выходное значение времени;

xout - конечное значение x;

dxout - конечное значение вектора ошибки.

Тексты программ:

Mpr. m

function [xout,dxout,tout] =mpr (funf,funj,x0,dt,edop,trace)

t=dt; x=x0; tout=t; xout=x0; n=size (x0);

dxout=zeros (1,n); m=0; it=0;

f0=feval (funf,x0);

while (t<=1)

ndx=1;

nh=1;

nv= [ndx; nh];

while (max (nv) >edop)

J=feval (funj,x0);

F=feval (funf,x0);

h= (-F) *t;

dx=Jh;

x=x+dx;

m=m+1;

ndx=norm (dx);

nh=norm (h);

nv= [ndx; nh];

if (m > 10)

t=t-dt;

dt=dt/2;

t=t+dt;

x=x0;

m=0;

end;

end;

x0=x;

tout= [tout; t];

xout= [xout; x];

dxout= [dxout; dx];

if (m < 4)

dt=dt*2;

end;

t=dt+t;

it=it+1;

end;

disp (it =); %количество итераций

disp (it);

disp (t =); %время выполнения итерационного процесса

disp (t);

pause;

xout - конечное значение x;

dxout - конечное значение вектора ошибки.

m - номер итерации.

Prog. m

trace=1;

dt=0.1;

x0=0;

edop=0.1;

[xout,dxout,m] = mpr (funf,funj,x0,dt,edop,trace);

plot (m,xout); %График значений x

pause;

plot (m,dxout); %График ошибки

pause;

Funf. m

function [f] =funf (x)

f= [0.0001*exp (30*x) +x-6];

end

Funj. m

function [j] =funj (x)

j= [30*0.0001*exp (30*x) +1];

end

Делись добром ;)