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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> аналитическая производная функции, найти аналитическую производную функции 
:(
    Опции темы
Мегатрахус
Дата 14.4.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



     Здравствуйте. подскажите пож как на паскале написать прогу, которая бы  находила аналитическую производную функции, причем функция вводится строкой и выходные данные должны быть в виде строки.  Используется таблица производных, которая храниться в самой проге или в отдельном текстовом файле. 
       Если  есть подобная программа напишите пож (можно на мыло: [email protected]) или подскажите хотя бы идею алгоритма
PM MAIL   Вверх
Мегатрахус
Дата 15.5.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



помогите пож доделать прогу, вот эта считает сложные функции от простого аргумента, а "+", "-",  "/" и  "*" не считает чего то


program  Analiz;
uses crt;
type
  diagrams = record
    ops, text  : string;
  end;

const
    max = 9;
    all : array [1..max] of diagrams = (
   ( ops:'+';   text: '($<)+($>)'),
   ( ops:'-';   text: '($<)-($>)'),
   ( ops:'*';   text: '($<)*(>)+($>)*(<)'),
   ( ops:'/';   text: '(($<)*(>)-($>)*(<))/((>)*(>))'),
   ( ops:'sin'; text: 'cos(>)*($>)'),
   ( ops:'cos'; text: '($>)*(-sin(>))'),
   ( ops:'exp'; text: '(($>)*exp(>))'),
   ( ops:'ln';  text: '($>)/(>)'),
   ( ops:'x';   text: '1') );

var str : string[60];

procedure find_simb (beg,end1:integer;wanted:string;var pos1,pos2:integer);
var
  i,bc,k,n : integer;
  fl : boolean;
begin
  bc := 0; n:=Length(wanted);
  for i:=beg to end1 do begin
    fl:=true;
    for  k:=0 to n-1 do
      if (str[i+k]<>wanted[k+1]) then begin fl := false; break end;
    if((fl)and(bc=0)) then break;
    if (str[i]='(') then Inc(bc);
    if (str[i]=')') then Dec(bc);
  end;
  pos1:=i;
  pos2:=i+n-1;
  if not(fl) then pos2:=end1+1;
end;

function df(beg,end1:integer):string;
  var
    st,sx,cur_adr : string;
    ch : char;
    i,j,pos1,pos2,uk : integer;
  begin
    st:='';sx:='';
    if (str[beg]='(') then begin find_simb(beg+1,end1,')',pos1,pos2);
      if (pos2>end1-1) then begin
        df := df(beg+1,pos2-1);
      end;
    end;
    for i:=1 to max do begin
      find_simb(beg,end1,all[i].ops,pos1,pos2);
      if(pos2<=end1) then begin
        cur_adr:=all[i].text;
        uk := 0;
        while (uk<Length(cur_adr)) do begin
          Inc(uk);
          ch := cur_adr[uk];
          case ch of
           '$' : begin Inc(uk); ch:=cur_adr[uk];
              if (ch='<') then sx:=df(beg,pos1-1)
               else sx:=df(pos2+1,end1);
             end;
           '<' : begin
              for j:=beg to pos1-1 do sx[j-beg+1]:=str[j];
              sx[0]:=chr(pos1-beg);
             end;
           '>' : begin for j:=pos2+1 to end1 do sx[j-pos2]:=str[j];
              sx[0]:=chr(end1-pos2);
             end;
           else sx:=ch;
          end;  { case }
          st:=st+sx;
        end; { while }
        df:=st; exit;
      end;  { if }
    end; { for }
    df:='0';
  end;  { df }

begin
  Writeln('Введите функцию:');
  Readln(Str);
  while Str<>'' do begin
    Writeln('производная: ', df(1, Length(Str)) );
    Readln( Str );
  end;
end.

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.0412 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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