![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Jack K. |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем доброго времени суток! Вот возникла проблемка... Немогу связать 2 процедуры для подсчета arctg(x) через ряд Тейлора... проблема в локальных/глобальных переменных или еще передачу по ссылке или по значению где нить напутал 100%... я в тупике. Пжжалста помогите, кто нить!!!
![]() Вот так вот я ее написал:
Program finish;
uses CRT;
Var x,xmin,n,j,xmax,f,dx,eps,q,c,k,m:real;
procedure input(var a:real);
begin
read(a);
end;
procedure arctg(x:real;var f:real);
begin
c:=1;
n:=0;
f:=0;
repeat
j:=-(2*n-1)/((2*n-1)*x*x);
c:=c*j;
f:=f+c;
until abs(f)<eps;
end;
procedure tab(xmin,xmax,q,x:real;var c:real);
begin
k:=0;
x:=xmin;
writeln ('x po Teyloru chislo chlenov arctan(x) ');
while x<=xmax do begin
arctg(x,f);
m:=arctan(x);
k:=k+1;
x:=x+dx;
writeln(x:2:2,' ', c:4:4{zn-e arctg(x)},' ', k:4:1,' ', m:4:4) ;
end;
end;
Begin
clrscr;
writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');
write('vvedite xmin:');
input(xmin);
write('vvedite xmax:');
input(xmax);
write('vvedite step:');
input(dx);
write('vvedite tochnost:');
input(eps);
tab (xmin,xmax,q,x,c);
readkey;
END.
Сообщение отредактировано: Jack K. - 10.05.2007 21:31 |
Jack K. |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем доброго времени суток! Вот возникла проблемка... Немогу связать 2 процедуры для подсчета arctg(x) через ряд Тейлора... проблема в локальных/глобальных переменных или еще передачу по ссылке или по значению где нить напутал 100%... я в тупике. Пжжалста помогите, кто нить!!! ![]() Вот так вот я ее написал:
Program finish;
uses CRT;
Var x,xmin,n,j,xmax,f,dx,eps,q,c,k,m:real;
procedure input(var a:real);
begin
read(a);
end;
procedure arctg(x:real;var f:real);
begin
c:=1;
n:=0;
f:=0;
repeat
j:=-(2*n-1)/((2*n+1)*x*x);
c:=c*j;
f:=f+c;
until abs(f)<eps;
end;
procedure tab(xmin,xmax,q,x:real;var c:real);
begin
k:=0;
x:=xmin;
writeln ('x po Teyloru chislo chlenov arctan(x) ');
while x<=xmax do begin
arctg(x,f);
m:=arctan(x);
k:=k+1;
x:=x+dx;
writeln(x:2:2,' ', c:4:4{zn-e arctg(x)},' ', k:4:1,' ', m:4:4) ;
end;
end;
Begin
clrscr;
writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');
write('vvedite xmin:');
input(xmin);
write('vvedite xmax:');
input(xmax);
write('vvedite step:');
input(dx);
write('vvedite tochnost:');
input(eps);
tab (xmin,xmax,q,x,c);
readkey;
END.
з.ы. подправил j в первой процедуре... там "-" на "+" исправил.. аааа, очень надо!! завтра сдавать... Сообщение отредактировано: Jack K. - 18.06.2007 21:05 |
мисс_граффити |
![]()
Сообщение
#3
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
формулу разложения дай...
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Jack K. |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Эскизы прикрепленных изображений ![]() |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Замени свою процедуру arctg вот на это:
procedure arctg(x:real;var f:real);
var
j: real;
sign, n: integer;
begin
sign := -1;
n := 0;
f := Pi/2;
j := x;
repeat
j := j / (x*x);
c := j / (2*n + 1);
f := f + sign * c;
sign := - sign;
inc(n);
until abs(c) < eps;
end;
А в процедуре Tab печатай не С, а F: writeln(x:2:2,' ', F:4:4{zn-e arctg(x)},' ', k:4:1,' ', m:4:4) ;
Сообщение отредактировано: volvo - 18.06.2007 22:07 |
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
...а еще половину глобальных переменных можно убрать.
у меня, в общем, так получилось: Program finish;
uses CRT;
Var xmin,xmax,dx,eps:real;
procedure input(var a:real);
begin
readln(a);
end;
procedure arctg(x:real;var f:real;var n: integer);
var c,j: real;
begin
n:=0;
c:=-x;
f:=pi/2;
repeat
j:=1/((2*n+1)*c);
c:=-c*sqr(x);
n:=n+1;
f:=f+j;
until abs(j)<eps;
end;
procedure tab(xmin,xmax,dx:real);
var x,f: real;
k: integer;
begin
x:=xmin;
writeln ('x po Teyloru chislo chlenov arctan(x) ');
while x<=xmax do
begin
arctg(x,f,k);
writeln(x:2:2,' ', f:4:4{zn-e arctg(x)},' ', k:4,' ', arctan(x): 4 : 4) ;
x:=x+dx;
end;
end;
Begin
clrscr;
writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');
write('vvedite xmin:');
input(xmin);
write('vvedite xmax:');
input(xmax);
write('vvedite step:');
input(dx);
write('vvedite tochnost:');
input(eps);
tab (xmin,xmax,dx);
readkey;
END.
Сообщение отредактировано: мисс_граффити - 18.06.2007 22:18 -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Jack K. |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
мисс_граффити ,volvo ОГРОМЕННОЕ ВАМ СПА-СИ-БО!!!
![]() т.е. я так понял, что у меня была с рекурентной формулой беда? Сообщение отредактировано: Jack K. - 18.06.2007 22:42 |
мисс_граффити |
![]()
Сообщение
#8
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
И с формулой, и выводил не совсем то.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Jack K. |
![]()
Сообщение
#9
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() ![]() |
мисс_граффити |
![]()
Сообщение
#10
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
да, мало сообщений.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Michael_Rybak |
![]()
Сообщение
#11
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Цитата уже 30 минут ищу кнопочку чтобы + поставить почему то рядом с вашим числом плюсов, картинки с изображением + и - не активны... наверно я еще оч мало на этом форуме.. недостаточно прав. Увеличил обоим. |
Jack K. |
![]()
Сообщение
#12
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
сегодня сдал!!! это была последня прога с прошлого семестра на зачет, штук 15 я сдал в январе-феврале, а с этой запарился))
Выкладываю итоговую версию задачи ![]() Задание было таким: Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xmin до xmax с шагом dx с точностью e. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда. Операции ввода исходных данных, вычисления функции с помощью ряда Тейлора и табулирования функции реализовать в виде отдельных подпрограмм (процедур и функций). Program finish;
uses CRT;
Var c,x,xmin,xmax,dx,eps,k,m,f:real;
procedure input(var a:real);
begin
read(a);
end;
procedure arctg(x:real;var f:real);
var
j: real;
sign, n: integer;
begin
n := 1;
c:=-1/x;
f := Pi/2+c;
repeat
c :=c*(-(2*n-1)/((2*n + 1)*(x*x)));
f := f + c;
inc(n);
until abs(c) < eps;
end;
procedure tab(xmax,x:real;var c:real);
var k,m:real;
begin
k:=0;
x:=xmin;
writeln ('x po Teyloru chislo chlenov arctan(x) ');
while x<=xmax do begin
arctg(x,f);
m:=arctan(x);
k:=k+1;
writeln(x:2:2,' ', f:6:6{zn-e arctg(x)},' ', k:4:1,' ', m:6:6) ;
x:=x+dx;
end;
end;
Begin
clrscr;
writeln('programma vichislyaet znachenie funkcii arctg(x) s pomoshu ryada Teylora');
write('vvedite xmin:');
input(xmin);
write('vvedite xmax:');
input(xmax);
write('vvedite step:');
input(dx);
write('vvedite tochnost:');
input(eps);
tab (xmax,x,c);
readkey;
END.
p.s. Michael_Rybak, спсиб за плюсы ![]() |
мисс_граффити |
![]()
Сообщение
#13
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
странную вещь ты сотворил....
зачем - я не поняла. я ж вроде выложила полную работающую программку, без лишних глобальных переменных... без НЕИСПОЛЬЗУЮЩИХСЯ переменных (а у тебя и такие есть). ну взял бы подпрограмму arctg у volvo ... но брать описание переменных в его версии, а все остальное - в моей... оригинально. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 10:28 |