Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

тематике Тема- Аппроксимация функций Выполнил- Студент гр

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.5.2024

Федеральное агентство связи

ГОУ ВПО «Сибирский государственный университет

телекоммуникаций и информатики»

Уральский технический институт связи и информатики(филиал)

Курсовая работа по

Вычислительной математике

Тема: «Аппроксимация функций»

Выполнил:

Студент гр. ПЕ-71

Рябов С.А.

Екатеринбург 2008

Задание для курсовой работы.

Целью курсовой работы является комплексное применение основных вычислительных методов, изученных и апробированных на лабораторных занятиях. На первом этапе выполнения задания решается нелинейное уравнение одним из методов (по вариантам): метод половинного деления (бисекции); метод касательных; метод Вегстейна. Корень уравнения определяет интервал интегрирования дифференциального уравнения, решаемого на втором этапе задания. Здесь задача Коши решается методами интегрирования второго порядка: по средней производной и в средней точке. Полученные дискретные значения решения обрабатываются методами аппроксимации экспериментальных данных. На третьем этапе строится полином Лагранжа, интерполирующий дискретные значения на разреженной сетке узлов. На четвертом этапе сеточная функция аппроксимируется алгебраическим полиномом по методу наименьших квадратов. Соответствующая система линейных уравнений, определяющая коэффициенты полинома, решается методом квадратного корня (метод Холецкого). На заключительном этапе строятся графики сеточной функции и аппроксимирующих ее полиномов.

Решение всей задачи выполняется компьютерными методами с помощью программирования алгоритмов на одном из языков программирования (Паскаль, Бейсик). Для оценки погрешности интегрирования на втором этапе вся задача решается средствами математической системы Maple.

Постановка задачи.

Вариант № 8

(номер варианта соответствует номеру студента в списке группы)

  1.  Вычислить наименьший положительный корень  T уравнения

2x^4-x^3-8

Положение корня локализовать методом прямого поиска с шагом 1. Для уточнения величины T применить метод

Вегстейна

  1.  На отрезке [0, T] проинтегрировать дифференциальное уравнение

с начальными условиями

< Y(0)=0.>2

где n – последняя цифра студенческого билета, Fs(t,) – периодическая функция с периодом =1, имеющая вид на основном отрезке периодичности [0, 1]:

Для интегрирования применить метод Эйлера второго порядка с коррекцией

< >.

Шаг интегрирования задать как  где N+1 – число дискретных точек,

  1.  Полученные дискретные значения функции Y(t) аппроксимировать интерполяционным полиномом в форме Лагранжа степени не ниже третьей. Для этого отобрать соответствующее число точек интерполяции, равномерно расположенных на отрезке [0, T].
  2.  Для всех вычисленных дискретных значений функции Y(t) построить многочлен (той же степени, что и интерполяционный полином Лагранжа), аппроксимирующий табличную функцию по методу наименьших квадратов. Для вычисления коэффициентов полинома построить процедуру, решающую систему линейных уравнений с симметричной матрицей методом квадратного корня (метод Холецкого разложения матрицы на произведение треугольных матриц).

Построить графики сеточной функции и аппроксимирующих ее полиномов.

Решить задачу встроенными процедурами системы Maple и сравнить результаты интегрирования дифференциального уравнения.


Решение на Maple

> restart;

> with(linalg):with(plots):

pp:=(x,y)->[x,y];

Warning, the protected names norm and trace have been redefined and unprotected

Warning, the name changecoords has been redefined

> f11:= proc(t) local z ;z:=piecewise(t<0,0,t<1/2,2*t,t<=1,2-2*t,0); evalf(z);end;

> plot(f11(x),x=-1..2);

> tau:=1;

> Fs:=proc(t,tau) local x,z,y;

x:=frac(t/tau);

z:=f11(x);evalf(z);

end;

> plot(Fs(t,tau),t=-0.1..2*tau+0.1);

Полином (здесь следует задать свой вариант полинома)

> p:=2*x^4-x^3-8;

> T0:=fsolve(p,x,0..3);

> ur:=diff(Y(t),t);

Правая часть дифференциального уравнения

> Fty:=0.1*t^2-2*t*Y(t);

>

> F:=Fty+(1+2/10)*Fs(t,tau);

> RK:=dsolve({ur=F,Y(0)=0.2},Y(t),type=numeric,output=listprocedure);

> fU:=subs(RK,Y(t));

> Nt:=20;h:=T0/Nt;

> T:=array(0..Nt):U:=array(0..Nt):

> for j from 0 to Nt do

x:=j*h;z:=fU(x);T[j]:=x;U[j]:=z;

#print(x,z);

od:

> RisU:=zip(pp,T,U):

> RU:=plot(RisU):

> display(RU);

> #====================================

> RisU:=zip(pp,T,U):

> RU0:=plot(RisU,style=point,symbol=cross):

> display(RU0);

Построение интерполяционного полинома по пяти точкам

> n:=4:d:=trunc( Nt/n):X:=array(0..n):Y:=array(0..n):

> for j from 0 to n do

X[j]:=T[j*d];Y[j]:=U[j*d];

end:

> RisXY:=zip(pp,X,Y):

> GrafSym:=plot(RisXY,style=point,symbol=box,color=blue,symbolsize=16):

> display(RU0,GrafSym);

> x:='x':omega:=product((x-X[k]),k=0..n);:

> Omega:=diff(omega,x);:

> j:='j':Lagr:=sum(Y[j]*omega/(x-X[j])/(subs(x=X[j],Omega)),j=0..n);

> RLagr:=plot(evalf(Lagr),x=0..T0,color=blue):

Графики дискретных отсчетов сигнала (крестики) и аппроксимация сигнала

тригонометрическим полиномом (непрерывная линия)

> display(RLagr,RU0,GrafSym);

> Polynom:=proc(t) local z,k;global n,a;

z:=sum(a[k]*t^k,k=0..n);evalf(z);

end;

> ur:=array(0..Nt);a:=array(0..n):

> #=======Весовые функции и вид полинома=================================

> Npoint:=Nt;

Ступеньки весов

> w:='w':w:=array(0..Npoint):

> w[0]:=10:;

> for j from 1 to Npoint do

if T[j]<1 then

w[j]:=2;

else

w[j]:=1;

fi;

od:

>

>

>

> j:='j':for j from 0 to Nt do

t:=T[j];z:=Polynom(t);

ur[j]:=(z-U[j])*w[j];

end:

> UR:=convert(ur,set):

> BB:=leastsqrs(UR, {a[0],a[1],a[2],a[3],a[4]});

> a[2] = 3.530729617; a[1] = -.4472707943;a[0] = .2186165474; a[4] = 1.513446662;

a[3] = -4.387004123;

> GrafP:=plot(Polynom(x),x=0..T0):;

> display(RLagr,RU0,GrafSym,GrafP);

Формирование матрицы для метода Холецкого

> m:=n+1;A:=array(0..n,0..n):B:=array(0..n,sparse):S:=array(0..2*n,sparse);

> j:='j':k:='k':for j from 0 to Nt do

p:=1;for k from 0 to 2*n do

S[k]:=S[k]+p;p:=p*T[j];

end;

p:=1;for k from 0 to n do

B[k]:=B[k]+U[j]*p;p:=p*T[j];

end;

end:

> evalm(convert(B,vector));

> for j from 0 to n do

for k from 0 to n do

A[j,k]:=S[j+k];

end:end:

> A0:=linsolve(convert(A,matrix),convert(B,vector));

> for j from 0 to n do a[j]:=A0[j+1];end:

> t:='t':GrafG:=plot(Polynom(t),t=0..T0,color=brown):;

> display(RLagr,RU0,GrafSym,GrafG,GrafP);

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=

> fn:=`C:\\work\\rezult.txt`;

> L:=readdata(fn,3):;

Nstrok:=vectdim(L);

> U_n:=array(1..Nstrok);:

T_n:=array(1..Nstrok);

> for j from 1 to Nstrok do

T_n[j]:=L[j,1];

U_n[j]:=L[j,2];

#print(j,T_n[j],U_n[j]);

od:

> u1:=zip(pp,T_n,U_n):

> RU1:=plot(u1,style=point,symbol=cross,color=black):

> display(RU,RU1);

Сравнение результатов на одинаковых сетках

>

> printf("%s",`  №      t      U_map    U_pas     разн`);

for k from 0 to Nt do t:=T[k]:del:=U[k]-U_n[k+1];

printf("% 3.0f  % 6.2f % 8.4f  % 8.4f % 8.4f \n",k,t,U[k],U_n[k+1],del):

end:;

 №      t      U_map    U_pas     разн

 0    0.00    .2000     .2000   0.0000

 1     .08    .2061     .2182   -.0121

 2     .16    .2241     .2479   -.0238

 3     .23    .2536     .2882   -.0346

 4     .31    .2935     .3377   -.0442

 5     .39    .3426     .3949   -.0523

 6     .47    .3993     .4556   -.0563

 7     .55    .4572     .4924   -.0352

 8     .62    .4941     .5068   -.0127

 9     .70    .5087     .5010    .0077

10     .78    .5031     .4774    .0257

11     .86    .4796     .4387    .0409

12     .93    .4410     .3879    .0531

13    1.01    .3905     .3468    .0437

14    1.09    .3485     .3228    .0257

15    1.17    .3238     .3137    .0101

16    1.25    .3142     .3174   -.0032

17    1.32    .3173     .3314   -.0141

18    1.40    .3310     .3536   -.0226

19    1.48    .3530     .3748   -.0218

20    1.56    .3736     .3755   -.0019


Решение на Pascal

program kurs;

uses crt;

const

 nt=20;

 u0=0.2;

type

 massiv= array[0..nt] of real;

var h,t0,z,root: real;

   fu: text;

   u: massiv;

function pol(t:real):real;

begin

  pol:=2*t*t*t*t-t*t*t-8;

end;

{*********}

function deriv(t:real):real;

begin

  deriv:=8*t*t*t-3*t*t;

end;

{*********}

procedure vegst(a,b:real; var x:real);

var

 x0,x1,y1,y0,y2,x2:real;

 delta:real;

 i:integer;

begin

 x0:=1.5;

 y0:=x0;

 x1:=2.2;

 y1:=x1;

 i:=1;

 while i<>5 do

 begin

    y2:=x1+pol(x1);

    x2:=y2-(y2-y1)*(y2-x1)/((y2-y1)-(x1-x0));

    writeln('x1= ',x1:10:3,'  x2= ',x2:10:3);

    y1:=y2;

    y2:=x2+pol(x2);

    x0:=x1;

    x1:=x2;

    i:=i+1;

 end;

x:=x1;

end;

{**************}

function signal(e: real): real;

begin

 if e<0 then

   z:=0

  else

   if e<1/2 then

     z:=2*e

    else

     if e<=1 then

       z:=2-2*e

      else

        z:=0;

 signal:=z;

end;

function Fs(t: real): real;

begin

 z:=t-trunc(t);

 Fs:=signal(z);

end;

function RHS(t,y : real): real;

begin

 RHS:= 0.1*t*t-2*t*y + (1+2/10)*Fs(t);

end;

{**********}

procedure difur(var u: massiv);

var

 t: real;

 k: integer;

begin

 u[0]:=u0;

 writeln(fu,0.0:8:2,u0:10:4);

 for k:=1 to nt do

   begin

     t:=k*h;

     u[k]:=u[k-1]+h*rhs(t+h/2,u[k-1]+h/2*rhs(t,u[k-1]));

     writeln(fu,t:8:2,u[k]:10:4);

   end;

end;

begin

 clrscr;

 vegst(0,3,root);

 t0:=root;

 h:=t0/nt;

 assign(fu,'c:\work\rezul.txt');

 rewrite(fu);

 difur(u);

 close(fu);

 repeat until keypressed;

end.

Перечень литературы

  1.  Амосов А.А., Дубинский Ю.А., Копченова Н.В. Вычислительные методы для инженеров.-М.:Высшая школа, 1994
  2.  Бахвалов Н.С. Численные методы. -М.:Наука,1973
  3.  Хемминг Р.В. Численные методы. – М.: Наука, 1972.
  4.  Калиткин Н.Н. Численные методы. – М.: Наука, 1978
  5.  Говорухин В.Н., Цибулин В.Г. Компьютер в математическом исследовании.




1. тематизатор схоластики автор томизма одного из господствующих направлений католической Церкви
2. они наверняка видят во сне Олимпийские игры
3. Введение 2 Медь и её сплавы 2 Алюминий и его сплавы 6 Список литературы
4. Яростный весенний ветер уныло завывая всю ночь сотрясал фермерский домик
5. вандал подразумевая под ним жестокого и грубого разрушителя
6. орієнтованої ринкової економіки.
7. Договор агентирования
8. Основа 2007. ~ 384 с.html
9. Значения переменной x]0
10. .Л. Андреева В. Н. 1982 chille picult Orlov ~ Тысячелистник остроконечный stercee био conitum septentrionle Koelle ~ Аконит Боре
11. Аналіз процесів розвитку оптичних транспортних інфокомунікаційних систем
12. Тема 52 Инновационная инвестиционная политика организации предприятия Растущая конкуренция заставл
13. Роль Эмиратов в мировой экономике
14. а ЦОКУР РОМАН МИКОЛАЙОВИЧ УДК 378
15. Подготовка и проведение родительского собрания в детском дошкольном учреждении
16. Реферат- Особенности предупреждения общеуголовной корыстной преступности
17.  ТЕОРЕТЧЧЕСКАЯ ЧАСТЬ
18. задание на с. 172 отмеченное треугольником Физика п
19. Курсовая работа- Система учета обязательств в Республике Казахстан
20. тематическое монологическое высказывание С3 ~ комбинированный диалог