IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Рациональное решение задачи., Пользуясь разложением функции f(x) в ряд S(x), вычислить частичную сум
kristianu
сообщение 20.12.2005 20:18
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Здравствуйте, файл с самим заданием прикреплен к сообщению: Прикрепленный файл  Zadano.doc ( 17.5 килобайт ) Кол-во скачиваний: 342
. (извеняюсь за неудобство, но в ней несколько формул, которые сложновато просто напечатать) Вообщем-то решение у меня есть, но оно является не рациональным(страшный преговор, при использовании моего кода весьма возможно переполнение стэка, да и работает она медленно), а как можно переделать у меня не приходит в голову, может поможите или хотя бы что-нить посоветуете...
Код моей проги:
Код
Program Lab3;

Uses CRT;

Function Choose(Text : String; a, b : Real) : Real;
    Var
    S : String;
    Code : Integer;
    V : Real;
        X, Y : Byte;
    Begin
       Write(Text);
       X := WhereX;
       Y := WhereY;
       repeat
           GoToXY(X,Y);
           ClrEoL;
           Readln(S);
                   Val(S, V, Code);
       until (Code = 0) and (V > a) and (V < b);
    Choose := V;
    end;

Function F(x : Real) : Real;
    begin
       f := ln(1 + x);
    end;

Function Deg(n : Word; a: Real) : Real;
    begin
       if n <> 0 then
            Deg := a * Deg(n - 1, a)
       else
            Deg := 1;
    end;

Function Width(eps : Real) : Integer;
    var
       i, w : Integer;
    begin
       i := 1;
       w := 0;
       repeat
          i := i * 10;
          Inc(w);
       until ( Trunc(1 / eps) div i = 0 );
       Width := w;
    end;

Function Bsum(x, e : Real; k : Integer) : Real;
    var
       i, j : Integer;
       ak : Real;
    begin
       i := -1;
       for j := 2 to k do
           i := (-1) * i;
       ak := i * Deg(k, x) / ( k * (k - 1) );
       if (ak < e) then
        Bsum := ak + Bsum(x, e, k + 1)
       else
          Bsum := ak;
    end;

Var
  Sn, rn : Real;
  e, x : Real;
Begin
  Repeat
    ClrScr;
    TextColor(yellow);
    GoToXY(35,1);
    Writeln('"""Program"""');
    TextColor(white);
    x := Choose(' - vvedite x(-1<x<2) : ', -1, 2);
    e := Choose(' - vvedite eps(0<eps<0.5) : ', 0, 0.5);
    Sn := (Bsum(x, 0.001, 2) + x) / (1 + x);
    Writeln(' - Sn = ', Sn : 4: Width(e) );
    rn := abs( f(x) - Sn );
    Writeln(' - rn(x) = ', rn : 4: Width(e) );
    TextColor(yellow);
    Writeln('Prodolzim?(dlya vihoda nazmite klavishu Q)');
  Until ReadKey in ['Q','q'];
  Write('Goodbay...');
  Readln;
  Clrscr;
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"