

Портфолио
тексты, графика, программирование, таблицы


Фрагмент текста

Окно программа для транскрибации аудиозаписей

Фрагмент формулы в строке формул.

Фрагмент текста
Ряд Тейлора
Как-то пришлось помогать одному первокурснику в поиске суммы, разложенной в ряд Тейлора функции sin²x. Поскольку все происходило в рамках отчета по лабораторной работе (курс "Основы программирования"), пришлось восстанавливать навыки работы в среде Turbo Pascal 7.
Но не программирование оказалось самым сложным. Большую часть времени пришлось затратить на устранение завышенных результатов при больших х, даже при суммировании значительного числа членов ряда.
Выход был найден в виде приведения больших значений аргументов к меньшим, так как синус - функция периодическая. Но хотелось все-таки добиться наглядности. Как члены ряда, сплошь представляющие собой противоположно направленные параболы в состоянии сформировать периодическую функцию?
Именно поэтому, кроме вычислительной работы, была предпринята попытка визуализицации процесса изменения функции при последовательном увеличении числа слагаемых.
В результате, была сооружена программа, которая перерисовывает функцию после добавления следующего слагаемого. Кроме того, в каждый момент отражается не только график функции включающей K слагаемых, но и другим цветом график функции, представляющей собой следующее К+1-е слагаемое. Добавляемая часть обозначена фиолетовым цветом не картинке и зеленым на видео. Последовательное нажатие на клавишу Enter приводит к смене одних графиков другими, а у наблюдателя создается целостное преставление о суммировании членов ряда.
Получается, что параболы, за счет коэффициентов имеют сплюснутые вершины и стремительные "бока". Поэтому они эффективно работают на периферии, и почти не трогают внутреннюю часть. Поскольку ветви направлены в разные стороны и по мере увеличения порядкового номера ветви параболы раздвигаются и становятся все более стремительными, в результате суммирования получается периодическая функция. Но лучше один раз посмотреть или в среде Turbo Pascal 7 запустить программу..
Программа попросит ввести пределы изменения аргумента X. В ответ можно ввести через пробел числа: -10 10. Enter.
Или посмотреть на https://www.youtube.com/watch?feature=player_embedded&v=WBxVou2zopw
program ryad1 (input,output);
uses graph;
var
X,XP,XK,DX,SX, S, S2, SI, EPS, T, Ab, V : real;
grDriver: Integer;
grMode: Integer;
ErrCode: Integer;
I,k:integer;
begin
write('vvedi interval XP,XK ');
readln(XP,XK);
dx:=0.01;
grDriver := Detect;
InitGraph(grDriver, grMode,'d:\turbo\turbo');
ErrCode := GraphResult;
if ErrCode = grOk then
begin
i:=1;
for k:=1 to 20 do
begin
line(0,200,600,200);
line(300,100,300,400);
line(297,120,303,120);
line(297,280,303,280);
line (300-trunc(3.14*20),197,300-trunc(3.14*20),203);
line (300+trunc(3.14*20),197,300+trunc(3.14*20),203);
X:=XP;
repeat
SX:=X-pi*trunc(X/pi);
SI:=sqr(sX);
S:=si; s2:=-SI*2*sqr(sX)/12;
if i>1 then
begin
for k:=2 to i do
begin
SI:=-SI*2*sqr(sX)/((2*k-1)*k);
s2:=-SI*2*sqr(sX)/((2*(k+1)-1)*(k+1));
S:=S+SI;
end
end ;
PutPixel(trunc(x*20+300),trunc(200-s*80),20);
PutPixel(trunc(x*20+300),trunc(200-s2*80),21);
X:=X+DX;
until X>XK;
i:=i+1;
readln;
cleardevice;
end;
end
else write('error');
end.
