Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как записать Функцию ряда Тейлора, Нужна правильная формула 
:(
    Опции темы
BUNKER2
  Дата 9.2.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от хнач до хкон с шагом dx с точностью  = 0.001. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.

Смотрите файл прикреплённый, там формула.

Вот моё решение ну там неправильно

 
Код

Program druga;
uses crt;
const e=0.001; 
var x1, x2, x3, dx, x, y, p, F:real;
    n:integer;    
Begin
p:=3.14;
clrscr;
Write('Введите значение x1=');
Readln(x1);
Write('Введите значение x2=');
Readln(x2);
Write('Введите значение dx=');
Readln(dx);
Write('Значение аргумента','  ');
Write('Значение функции','  ');
Writeln('Количество членов ряда');
If (abs(x1)>1)or(abs(x2)>1) then writeln('Неправильный аргумент') else begin
x:=x1;
While (x<x2)or(x=x2) do
    Begin
        Write(x,'  ');
        x3:=x;
        F:=p/2-x;
        y:=x3;
        n:=1;
        While (y>e)or(y=e) do
        Begin
        y:=y*(2*n-1)*x3*x3/(2*n*(2*n+1));    { ----------- типа эта строка должна быть правильно записана, а может и нетолько эта. }
        F:=F+y;
        y:=y*(2*n+1);
        n:=n+1;
        end;
        Write(F,'  ');
        Writeln(n-1);
        x:=x+dx;
        end;
        end;
Readln;
End. 


Я уже все свои проги правильно переписал, только эта осталась. Нужно на утро, сесия заканчивается!

Спасибо Всем кто помогал ранее. Получилось.
 


Это сообщение отредактировал(а) volvo877 - 10.2.2007, 13:23

Присоединённый файл ( Кол-во скачиваний: 24 )
Присоединённый файл  _______.rar 2,25 Kb
PM MAIL   Вверх
Kanes
Дата 10.2.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 11.3.2005

Репутация: нет
Всего: нет



Привет smile 
Вот я делал для ф-ции exp(-x):
Код

program lab3_3;
uses crt;
const
  MaxIter = 500;
var
  Xn, Xk: real;
  dX, Eps: real;
  x, y, c: real;
  n: integer;
begin
  clrscr;
  write('Vvedite Xn, Xk, dX, Eps: ');
  readln(Xn, Xk, dX, Eps);
  writeln;
  writeln('------------------------------------------');
  writeln('|      X      |      Y      |      n     |');
  writeln('------------------------------------------');
  x:= Xn;
  while x <= Xk do
    begin
      c:= 1;
      y:= c;
      n:= 1;
      while abs(c) > eps do
        begin
          c:= -c*(x/n);
          y:= y + c;
          inc(n);
        end;
      if n >= MaxIter then
        begin
          write('Rad rashoditsa!');
          break;
        end;
      writeln('|', x:9:5, '    |', y:9:5, '    |', n:7, '     |');
      x:= x + dX;
    end;
  writeln('------------------------------------------');
  readln;
end.

Принцип такой: у тебя в задании дано разложение по формуле Тейлора, и формула n-го члена.
Между членами ряда есть некоторая разница, такая что, если придыдущий член ряда умножить на эту разницу, получится следующий член ряда.
Офтоп: похоже это задание из учебника Павловской (препода нашего универа ИТМО), так вот, есть к этому учебнику замечательный практикум, где многие задания, в том числе и это, разжованы smile 
--------------------
Big gun - big future  
PM MAIL   Вверх
Zond235
Дата 28.1.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.1.2008

Репутация: нет
Всего: нет



А вот у меня точь такое-же зад-е тока формула другая, как её реализовать пока не пойму? Подскажите

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  _______________________.zip 7,41 Kb
PM MAIL   Вверх
Ofer
Дата 28.1.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.10.2006
Где: КривбаСС

Репутация: нет
Всего: 5





Замени на твою функцию:
y := y + pow(x,n)/fact(n);

Предварительно опиши функции
Код

function fact(n : Integer): Integer;
begin
  if n = 0 then
  Fact := 1
  else
  Fact := n * Fact(n - 1);
end;

function pow(x, n : Integer): Real;
var
  rx : Real;
  i : Integer;
begin
  rx := 1;
  for i := 0 to n do
  rx := rx * x;
  pow := rx;
end;

PM MAIL ICQ   Вверх
volvo877
Дата 29.1.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Блин... Ну СКОЛЬКО ЖЕ МОЖНО??? Тысячу раз говорено: не решаются задачи на разложение в ряд таким образом, понимаешь, Ofer, НЕ решаются! Не умеешь решать по-другому - не делай никак! А дебилизму вот этому учить не надо. Все понятно?


Zond235, все проще гораздо:
Код

function _Exp(x: real): real;
const eps = 0.0000001; { Задаем точность }
var
  s, next: real;
  n: integer;

begin
  next := 1;
  s := next; n := 0;
  repeat
    inc(n);
    next := (next * x) / n;
    s := s + next;
  until (next < eps);
  _exp := s
end;
и не надо никаких функций Fact и Pow... Как вызывать - разберешься?

Это сообщение отредактировал(а) volvo877 - 29.1.2008, 09:42
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

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

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.