Математическое моделирование и численные методы в решении технических задач
Курсовой проект - Математика и статистика
Другие курсовые по предмету Математика и статистика
j]*xx[j])/a[i,i];(x[,i,]=,x[i]:0:2, );;:=false;i:=1 to n do:=0;j:=1 to n do:=alfa+(a[i,j]*x[j]);:=abs((alfa-a[i,n+1])/(a[i,n+1]));(e=,e:2:5, );e>=ed then d:=true;;;not d; end.
Результаты
422257
Корни уравнений х1=-1; х2=1;
Вывод
Метод Ньютона позволяет находить решение систем линейных алгебраических уравнений, если определитель основной матрицы отличен от нуля. По сути метод сводится к вычислению определителей матриц порядка n на n и применению соответствующих формул для нахождения неизвестных переменных.
4.3. Метод Зейделя
Теоретические сведения
Метод Зейделя (иногда называемый методом Гаусса-Зейделя) является модификацией метода простой итерации, заключающейся в том, что при вычислении очередного приближения x(k+1) его уже полученные компоненты x1(k+1), ...,xi - 1(k+1) сразу же используются для вычисления xi(k+1).
В координатной форме записи метод Зейделя имеет вид:
x1(k+1) = c11x1(k) + c12x2(k) + ... + c1n-1xn-1(k) + c1nxn(k) + d1 x2(k+1) = c21x1(k+1) + c22x2(k) + ... + c2n-1xn-1(k) + c2nxn(k) + d2 ... xn(k+1) = cn1x1(k+1) + cn2x2(k+1) + ... + cnn-1xn-1(k+1) + cnnxn(k) + dn где x(0) - некоторое начальное приближение к решению.
Таким образом i-тая компонента (k+1)-го приближения вычисляется по формуле
xi(k+1) = ? j=1i-1 cijxj(k+1) + ? nj=i cijxj(k) + di , i = 1, ..., n
Условие окончания итерационного процесса Зейделя при достижении точности ? в упрощенной форме имеет вид:
|| x (k+1) - x (k) || ? ?.
Блок схема
Текст задачи
ithenx[i]:=x[i]-(a[i,j]*x[j])/a[i,i];(x[,i,]=,x[i]:0:5,);;">a:array[1..100,1..100] of integer;:text;,j,m,n,k:byte;,ed,alfa:real;d:boolean; x:array[1..100] of real;:=0.001;(t,H:\Phoenix\4.txt);(t);not eof(t) do:=i+1;:=0;not eoln(t) do:=j+1;(t,a[i,j]);;(t);;(t);:=i;:=j;i:=1 to n do beginj:=1 to m do(a[i,j], );;;:=k+1;(k=,k, );i:=1 to n do[i]:=a[i,n+1]/a[i,i];j:=1 to n doj=ed then d:=true;;;not d;
end.
Результаты
24371802
Корни уравнений х1=2; х2=-1; х3=0; х4=4;
Вывод
Достоинства метода Зейделя в том, что он достаточно прост в написании текста программы, недостатки метода в том, что объем текста программы большой и громоздкие операции.
5.Решение дифференциальных уравнений
.1 Метод Эйлера
Теоретические сведения. Решить дифференциальное уравнение у/=f(x,y) численным методом - это значит для заданной последовательности аргументов х0, х1…, хn и числа у0, не определяя функцию у=F(x), найти такие значения у1, у2,…, уn, что уi=F(xi)(i=1,2,…, n) и F(x0)=y0. Таким образом, численные методы позволяют вместо нахождения функции У=F(x) получить таблицу значений этой функции для заданной последовательности аргументов. Величина h=xk-xk-1 называется шагом интегрирования.
Текст задачи
const
x0=0;
y0=1;=5;=1;=(Xn-x0)/n;x,y:array[1..100] of real;,j:integer;:integer;:text;f(x,y:real):real;:=2*y-2*x+1;
{f:=exp(2*x)+x;};(t,H:\Phoenix\eyler.txt);(t);[1]:=x0; y[1]:=y0;(x[1]:2:5, ,y[1]:2:5);i:=2 to n+1 do begin[i]:=x[i-1]+deltax;[i]:=y[i-1]+f(x[i-1],y[i-1])*deltax;(x[i]:2:5, ,y[i]:2:5);;i:=1 to n+1 do(t,x[i]:2:5, ,y[i]:2:5);
close(t);.
Результаты
10.00001.0000020.20001.6000030.40002.3600040.60003.3440050.80004.6416061.00006.37824
Вывод
Метод Эйлера относиться к численным методам, дающим решение в виде таблицы приближенных значений искомой функции у(х). Он является сравнительно грубым и применяется в основном для ориентировочных расчетов.
5.2 Метод Рунге-Кутта
Теоретические сведения
. Эти методы являются одноступенчатыми: чтобы найти уm+1, нужна информация о предыдущей точке xm, ym.
. Они согласуются с рядом Тейлора вплоть до членов порядка hp, где степень р различна для различных методов и называется порядковым номером или порядком метода.
. Они не требуют вычисления производных от f (x, y), а требуют вычисления самой функции.
Текст программы =0;=1;
n=5;=1;=(Xn-x0)/n;x,y:array[1..100] of real;,j:integer;:integer;:text;,k2,k3,k4,deltay:real;f(x,y:real):real;:=2*y-2*x+1;
{f:=exp(2*x)+x;};(t,H:\Phoenix\runge-kut.txt);(t);[1]:=x0; y[1]:=y0;(x[1]:2:5, ,y[1]:2:5);i:=2 to n+1 do begin[i]:=x[i-1]+deltax;:=deltax*f(x[i-1],y[i-1]);:=deltax*f(x[i-1]+deltax/2,y[i-1]+k1/2);:=deltax*f(x[i-1]+deltax/2,y[i-1]+k2/2);:=deltax*f(x[i-1]+deltax,y[i-1]+k3);:=(k1+2*k2+2*k3+k4)/6;[i]:=y[i-1]+deltay;(x[i]:2:5, ,y[i]:2:5);;i:=1 to n+1 do(t,x[i]:2:5, ,y[i]:2:5);
close(t);.
Результаты
10.000001.0000020.200001.6917330.400002.6252740.600003.9195150.800005.7518261.000008.38679
Вывод
Метод Рунге-Кутта достаточно точный и за малое количество итераций приходит к ответу, недостатки в том, что требуются большие и неудобные выражения для вычислений.
Общий вывод
Если при решении дифференциальных уравнений требуется точность вычислений, то лучше использовать метод Рунге-Кутта, если же достаточно приблизительной точности, то можно воспользоваться методом Эйлера. По уровню сложности написания текста задачи одинаковы.
6.Ряды Фурье
Теоретические сведения
Ряд Фурье является частным случаем функциональных рядов. Функциональным рядом называется выражение вида
где U1(x),U2(x), ... ,Uk(x), ... - функции, зависящие от одной переменной х или от нескольких переменных (тогда через х обозначают точку в пространстве: х = (х1, ... , xn)).
Текст задачи
const
ee=1e-3;
a=0;=3;=b-a;=20;=1e-3;k:integer;:text;,t,dt,st,Ampl,phi,i:real;,bk:array [1..n] of real;f(t:real):real;(t>=0) and (t=2) then f:=6-2*t;;si(c,k:integer):real;t,dt,e,ss,s:real; z:integer;:=(b-a)/50;:=s;:=dt/2;c of
: s:=f(a)+f(b);
: s:=f(a)*cos(2*Pi*k*a/period)+f(b)*cos(2*Pi*k*b/period);
: s:=f(a)*sin(2*Pi*k*a/period)+f(b)*