singlepost

Помогите решить задачу на Turbo Pascal 7! << На главную или назад  

Разработать программу разложения функции ln(1-x-6x^2) в ряд Тейлора по степени X-A.

Исходные данные: a=0.

Программа должна содержать удобный пользовательский интерфейс (меню пользователя, краткие сведения о программе, возможность просмотреть результат в виде таблицы значений, график функции, возможность просмотра текста программы с комментариями и пояснениями). При написании программы учесть автоматическое масштабирование, название графика, метки на осях и обозначение осей.

Помогите сделать) Ну или опишите что и как реализовать)

74 ответов в теме “Помогите решить задачу на Turbo Pascal 7!”

  1. 17
    Руслан Ким ответил:

    Всё уже, заставил работать программу дописав:
    if ((1-3*x)>0)AND(1+2*x>0) then
    Begin
    PHI := ln(1-3*x)+ln(1+2*x);{Funkciya, grafik kotoroi stroim}
    End

  2. 16
    Антон Щиров ответил:

    1) У тебя функция определена на интервале (-1/2; 1/3), а ты ее вычисляешь на отрезке [-2; 30]/

    2) Лихо ты конечно упростил, мало того, что заставил машину логарифм два раза считать, так, еще и переопределил область определения

  3. 15
    Руслан Ким ответил:

    В общем разложение я выполнил нужное, теперь косяки с выводом графика. (моя функция от которой нужен график – ln(1-x-6x^2), для простоты разложили её на ln(1-3x)(1+2x)=ln(1-3x)+ln(1+2x)
    Программа вылетает с ошибкой "207: Invalid floating point operation", она как я понял вызвана наличием логарифма. Что делать и чем это можно вылечить?

    Вот собственно кусок программы:
    =========================
    USES GRAPH,CRT;
    FUNCTION PHI ( X:extended ):extended;
    BEGIN
    PHI := ln(1-3*x)+ln(1+2*x); ███подставляю функцию███
    END;
    VAR
    GRAPHDRIVER,
    GRAPHMODE : INTEGER;
    IX2 : double;
    IX, IY, IX1, IY1, I : INTEGER;
    ErrorCode : Integer;

    procedure MyGraphInit;
    begin
    GraphDriver := Detect;
    InitGraph(GraphDriver, GraphMode, '');
    ErrorCode := GraphResult;
    if ErrorCode <> grOk then
    begin
    writeln('InitGraph Error: ',GraphErrorMsg(ErrorCode));
    Writeln('Program is aborted!');
    Halt (1);
    end;
    end;

    begin
    CLRSCR;

    MyGraphInit;
    {——–Vivod koordinatnix osei———-}
    SETLINESTYLE (SOLIDLN, 0, NORMWIDTH);
    LINE(100,450,100,50); LINE(50,400,600,400);
    LINE(100,50,95,65);
    LINE(100,50,105,65);
    LINE(600,400,580,395);
    LINE(600,400,580,405);

    OUTTEXTXY(90,410,'0');
    OUTTEXTXY(87,375,'1');
    OUTTEXTXY(87,275,'5');
    OUTTEXTXY(80,150,'10');
    OUTTEXTXY(80,60,'Y');

    LINE(95,375,105,375);
    LINE(95,350,105,350);
    LINE(95,325,105,325);
    LINE(95,300,105,300);
    LINE(95,275,105,275);
    LINE(95,250,105,250);
    LINE(95,225,105,225);
    LINE(95,200,105,200);
    LINE(95,175,105,175);
    LINE(95,150,105,150);

    OUTTEXTXY(150,405,'1');
    LINE(150,395,150,405);
    OUTTEXTXY(200,405,'2');
    LINE(200,395,200,405);
    OUTTEXTXY(250,405,'3');
    LINE(250,395,250,405);
    OUTTEXTXY(300,405,'4');
    LINE(300,395,300,405);
    OUTTEXTXY(350,405,'5');
    LINE(350,395,350,405);
    OUTTEXTXY(400,405,'6');
    LINE(400,395,400,405);
    OUTTEXTXY(450,405,'7');
    LINE(450,395,450,405);
    OUTTEXTXY(500,405,'8');
    LINE(500,395,500,405);
    OUTTEXTXY(550,405,'9');
    LINE(550,395,550,405);
    OUTTEXTXY(590,415,'X');

    IX := 0;
    IY := 0;
    IX1:= 0;
    IY1:= 0;
    IX2:= 0;

    SETCOLOR(10);

    {——-ПОСТРОЕНИЕ ГРАФИКА Ф-ИИ————}
    FOR I := 0 TO 640 DO BEGIN
    IX2 := I/20-2;
    if IX2 = 0 then IX2:=0.01;
    IY := ROUND(400 – 25*PHI(IX2));
    IX := TRUNC(100 + 50*IX2);
    IF I > 0 THEN
    LINE(IX1,IY1,IX,IY);
    IX1 := IX;
    IY1 := IY;
    END;
    READLN;
    closegraph;
    END.
    ===========================

  4. 14
    Антон Щиров ответил:

    Помочь можем, а вот делать мне лично лень, да и некогда

    Еще раз говорю – найдаи аналитический вид n-ой производной двоей функции.

    Подсказка: свою функцию запиши в виде f(x) = ln(g(x)), где g(x) = 1-x-6x^2. При этом получаем, что g'(x) = -12x – 1, g''(x) = -12, g'''(x) = 0. Тогда имеем:

    f'(x) = g'(x)/g(x)
    f''(x) = [g''(x)g(x) - (g'(x))^2]/(g(x))^2
    и т.д.
    Считаешь 3-5 производную и находишь общую формулу. Так в знаменателл у тебя всегда будет (g(x))^n где n – это порядок ароизводной

  5. 13
    Руслан Ким ответил:

    Эх, видать никто не в силах мне помочь)

  6. 12
    Андрей Мельников ответил:

    Сочувствую…
    Помню как сам парился, правда с Рунге-Кутта 4 порядка, и не в паскаль а в билдере.
    Вопрос очень интересный, надо подумать…

  7. 11
    Тут Тебя ответил:

    Насколько я понимаю, ряд тейлора описывает функцию через её производные, и что тебе мешает их найти если функция у тебя задана? Или я что-то непонимаю?

  8. 10
    Руслан Ким ответил:

    Я там был, ничем не помогло, т.к. функции моей там нет и как в Паскале все это сделать не понятно…

  9. 9
    Антон Щиров ответил:

    //ru.wikipedia.org/wiki/Ряд_Тейлора

  10. 8
    Руслан Ким ответил:

    Пользовательский интерфейс готов, хы. Найдитесь добрые люди, кто смог бы хотя бы на бумаге разложить функцию по данным выше критериям, а в паскале все пошагово реализуем, а там и графики приделаю.

  11. 7
    Руслан Ким ответил:

    А по-русски?) Составьте мне плиз кусок программы где все это вычисляется и рисуется график, плиз)

  12. 6
    Антон Щиров ответил:

    Ищи аналитический вид n-ой производной функции а в точке 0

  13. 5
    Руслан Ким ответил:

    > возможность просмотра текста программы с комментариями и пояснениями
    Не обсуждаем эту "тему", в задании её указали, т.к. кто-то может написать прогу без комментов внутри.

  14. 4
    Саня Какбэя ответил:

    На turbo pascal??? O_o Удачи…

  15. 3
    Руслан Ким ответил:

    2Антон Щиров, да, именно Turbo Pascal. Интерфейс я уже сделал без Turbo Vision, вывел окно расчерченное, выбираем пункт меню и переходим к нужному действию.
    Теперь нужно как-то реализовать разложение в ряд Тейлора по степени X-A функции ln(1-x-6x^2) и построить график. Может кто помочь?)

    2Саня Шевченко, а в чем проблема?)

  16. 2
    Павел Сергеевич ответил:

    > возможность просмотра текста программы с комментариями и пояснениями
    дада) мне тоже интересна реализация этой темы

  17. 1
    Антон Щиров ответил:

    Turbo Vision в зубы

    А точно нужен Turbo Pascal? На Delphi на порядок проще будет

    2All А самое интересное вот это
    > возможность просмотра текста программы с комментариями и пояснениями)

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.