Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Pascal] Вычислить значение функций 
V
    Опции темы
Koschei
Дата 12.10.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вычислить значение функций "на рисунке" с точностью E=10^-4,где x изменяется от 0,2 до 2 с шагом 0.1.
вычисление y оформить в функцию,результаты вывести в виде таблицы.


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

Это сообщение отредактировал(а) Koschei - 13.10.2006, 12:12

Присоединённый файл ( Кол-во скачиваний: 46 )
Присоединённый файл  _______.GIF 2,26 Kb
PM MAIL   Вверх
Snowy
Дата 12.10.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Перенесено из Паскаля
PM MAIL   Вверх
Alexeis
Дата 12.10.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Модератор: название скорректировано в соответствии с правилами раздела

Добавлено @ 16:33 
Koschei, неразборчиво формула написана.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alexeis
Дата 12.10.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Если я правильно разобрал что там написано, то так.
Код

program Project2;
const
  err = 1e-4;

function f(x : double) : double;
var
  n    : integer;
  s, c : double;
  sign : integer;
  fact : double;

Begin
  sign := 1;
  fact := 3 * 2;
  s := 0;
  n := 1;
  repeat
    c := sign * exp(n * ln(x)) / ((2 * n - 1) * fact);
    s := s + c;
    sign := -sign;
    inc(n);
    fact := fact * (2 * n) * (2 * n + 1);
  until abs(c) < err;
  f := s;
end;

var
  x : double;
begin
  x := 0.2;
  Repeat
    Writeln('x= ', x : 1 : 1, '  f= ', f(x) : 2 : 4);
    x := x + 0.1
  until x >= 2.001;
  readln;
end.


Это сообщение отредактировал(а) alexeis1 - 12.10.2006, 17:23


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Koschei
Дата 13.10.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Рисунок поменял.
А текстовый алгоритм никто не поможет написать?хотя бы коротенький из нескольких строк...
alexeis1
чего то задача не работаетsmile,переписал вроде правильно.У тебя она работала?

Это сообщение отредактировал(а) Koschei - 13.10.2006, 12:39
PM MAIL   Вверх
Alexeis
Дата 13.10.2006, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Koschei @  13.10.2006,  12:23 Найти цитируемый пост)
У тебя она работала?

Да но в консоли в делфи, в сам паскаль я не лез.

Добавлено @ 13:13 
Цитата(Koschei @  12.10.2006,  16:12 Найти цитируемый пост)
написать текстовый алгоритм

это слишком абстрактная задача...


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Koschei
Дата 13.10.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



текстовый алгоритм типа что то этого:
1. Запрашиваем n (до какой степени решать), x(значение угла) числа.
2. Считываем и заносим в переменные n и x соответственно.
3. С помощью цикла высчитываем все значения заданной функции.
4. Во время выполнения цикла суммируем значения функции в нейтральную переменную.
5. Выводим результат на экран
вот текстовый алгоритм для другой задачи.
alexeis1 А команды дельфи отличаются от паскаля?видно то будет что сделано в дельфи,а не на паскале?(может звучит глупо конечно,но хотелось бы уточнить)
ошибку выдает вот эта команда:fact := 3 * 2; пишет что:error 116:must be in 8087 mode to compile this.
Не обьясниш что за ошибка?
Все прога работает!урааа!спасибо вам!

Это сообщение отредактировал(а) Koschei - 13.10.2006, 14:18
PM MAIL   Вверх
Kuvaldis
Дата 13.10.2006, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


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

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



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

{$N+}


Текстовый алгоритм:
Функция f:

1. Инициализируем локальные переменные
2. Вычисляем текущий член суммы
3. Добавляем его к суммы
4. Если текущий член суммы больше заданной точности, то переход на шаг 2.
5. Возвращаем в вызывающую функцию полученную сумму.

Главная функция

1. Инициализируем переменные
2. Во время выполнения цикла выводим аргумент и значение функции на экран для заданного интервала

Это сообщение отредактировал(а) Kuvaldis - 13.10.2006, 14:06


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Koschei
Дата 13.10.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может это покажется вверх наглости,но не могли бы вы уважаемые написать что каждый шаг делает?
Например:
var
  n    : integer;
  s, c : double;         = здесь идет перечисление "переменных"
  sign : integer;
  fact : double;   
А то как мне обьснить преподу что и как у меня получилось?
PM MAIL   Вверх
Alexeis
Дата 13.10.2006, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



присвоение начальных значений sign - знак +-, fact - вычисление факториала s - накапливет сумму (все члены) n - номер члена 
Код

 sign := 1;
  fact := 3 * 2;
  s := 0;
  n := 1;


c - расчет текущено члена s - добавление значения очередного члена к общей смме
Код

    c := sign * exp(n * ln(x)) / ((2 * n - 1) * fact);
    s := s + c;
    sign := -sign; // чередуем знак
    inc(n);            // увеличиваем счесчик n на единицу
    fact := fact * (2 * n) * (2 * n + 1); // вычисляем факториал для следующего шага


Код

....
 until abs(c) < err; // выполняем пока очередной член не станет меньше заданной погрешности
  f := s; // возвращаем результат функции.



Ну а вывод на экран надеюсь ясен? просто в цикле распечатка значений функции, правда счетчик уже с плавающей запятой.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Koschei
Дата 13.10.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вот это вы молодцы!Спасибо еще раз!Выташили меня,из омута долгов!
PM MAIL   Вверх
Alexeis
Дата 13.10.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Koschei @  13.10.2006,  15:23 Найти цитируемый пост)
Выташили меня,из омута долгов! 

Только вот надо галочку ставить что вопрос решен. (Ладно уж поставлю сам smile )


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Koschei
Дата 14.10.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



оказывается нужно коффициэнт в рекурентном соотношении найти сначала!помогите доделать.пожалуйста,а то преподователь так не принимает smile 
PM MAIL   Вверх
Alexeis
Дата 14.10.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(Koschei @  14.10.2006,  11:03 Найти цитируемый пост)
оказывается нужно коффициэнт в рекурентном соотношении найти сначала!

Чтоб упростить задачу и сделать ее более прозачной я вообще отказался от рекурсии. Ее просто НЕТ smile 
Рекурентное вычисление факториала заменено, на пошаговое, что намного эффективней. Посдите сами при рекурсии надо каждый раз вычислять
1*2*3
1*2*3*4*5
1*2*3*4*5*6*7

А я сделал проще
fact := 1*2*3
fact := fact    *4*5 
fact := fact            *6*7

ИМХО тут рекурсия нужна как телеге 5-е колесо. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Koschei
Дата 14.10.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



alexeis1, 
так препод требует именно в коофицент в рекуретном найти!другие способы ему не нужны!пожалуйста напишите именно в рекуретном!
и можно написать весь текст программы сразу с рекуретном методом?
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

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


 




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


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

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