Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача на табулирование значений функции.

Автор: Andrewshkovskii 12.11.2006 4:27

ВОт задача
Составить структурированную программу табулировании значения функции S(x)=3x+8x^2+..n(n+2)x^n
y(x)=x(3-x)/(1-x)^3
на отрезке 0,1<=x<=0.8
сумму S(x) вычислить из к членов ряда,к=40.
шаг х dX=(abs(Xkонечный-Xначальный))/9
Алгоритм для каждого значения х,от Хначальный до Хконечный ,с амое dX,посчитать значения S(x) и y(x) и выдать на экран таблицу с помощью ASCII кодов.


Вот первая программа


Program z3v28;
uses crt;
const
xn=0.1;
xk=0.8;
k=40;
var
a, x,s,y,dx:real;
n:integer;
begin
clrscr;
writeln(' ЙННННННННННЛННННННННННЛНННННННННН»');
writeln(' є x є y є s є');
dx:=abs(Xk-Xn)/9;
x:=xn;
while (x<Xk) do begin
S:=0;
a:=1;
n:=1;
while n<=40 do begin
a:=a*x;
S:=S+n*(n+2)*a;
n:=n+1;
end;
y:=x*(3-x)/((1-x)*(1-x)*(1-x));
writeln (' МННННННННННОННННННННННОНННННННННН№');
writeln (' є',x:6:3,' є',y:6:3,' є',s:6:3,' є');
x:=x+dx;
end;
writeln (' ИННННННННННРННННННННННРННННННННННј');
readkey;
end.



Должно получиться равные значения в полях y и s.
В этой программе не получаеться только в самой посл. строке.
И ешё я не писал здесь первую часть функции (* s(x) 3*x+8*sqr(x); *).
не знаю больше как решать..есле подставлять в прогу первую часть s(x) то он в таблице возрастает,и у его никак не догонит=/

Автор: volvo 12.11.2006 4:37

Первая содержит как минимум одну ошибку:

repeat
Writeln ('Vvedite Xk [0.2..0.8]');
readln(Xk);
until (Xk>=0.2) or (Xk<=0.8); { <--- Здесь !!! }


К тому же, с чего ты взял, что в цикле For будет именно 10 итерации? Вручную считал? "Это не наш метод" (С), это должна считать программа, если уж так хочется использовать именно For...

Ну, а потом - эти 2 программы выдают совершенно разные результаты, как ты можешь их сравнивать? Посчитай, что программа ДОЛЖНА выдавать, и та, которая это выдаст будет правильной...

Автор: Andrewshkovskii 12.11.2006 15:27

насчет то что должна ты прав=)
А вот что там за ошибка в цикле которую ты нашел??Программа компилируетсья нормально. mega_chok.gif

Автор: klem4 12.11.2006 16:51

 (Xk>=0.2) or (Xk<=0.8);


При такой постановке условия годится любое Х. А тебе -то надо чтоб было в интервале [0,2 ... 0,8].

Автор: Andrewshkovskii 16.11.2006 13:33

исправил задание (*см первый пост*).
намучался уже..не могу=/