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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Cоставить функцию для вычисления приближенного зна, Cоставить функцию для вычисления приближ 
:(
    Опции темы
dark99
Дата 20.4.2011, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Cоставить функцию для вычисления приближенного значение интеграла

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  __________.jpg 32,03 Kb
PM MAIL   Вверх
leniviy
Дата 21.4.2011, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что такое "p", я не понял, но остальное вроде бы понял.
Код

function f_line(x: real): real;
begin
  f_line:= x;
end;

function f_arc(x: real): real;
begin
  f_arc:= Sqrt( 1 - Sqr(x) );
end;

const
  h: real = 0.01;

type
  Tf = function (x: real) : real;

function integral(
    f: Tf;
    x0, xn: real
  ): real;
var
  rslt: real = 0;
  n: Integer;
  i: Integer;
  xi, xi1, fxi, fxi1: real;
begin
  n:= Trunc((xn - x0) / h);
  xi:= x0;
  fxi:= f(xi);
  for i:=1 to n do
  begin
    if (i = n) then
      xi1:= xn
    else
      xi1:= x0 + (h * i);
    fxi1:= f(xi1);
    rslt:= rslt + ( h/2 * ( fxi + fxi1 ) );
    xi:= xi1;
    fxi:= fxi1;
  end;
  integral:= rslt;
end;

begin
  writeln(integral(@f_line, 0, 1) :0:5 );
  writeln(integral(@f_arc, -1, 1) :0:5 );
end.


PM MAIL   Вверх
dark99
Дата 23.4.2011, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

  rslt: real = 0;


Ошибку выдает тут

PM MAIL   Вверх
leniviy
Дата 23.4.2011, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну тада, 
Код

 rslt: real;
...
begin
  result:= 0;

PM MAIL   Вверх
dark99
Дата 23.4.2011, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

  result:= 0;


Неизвестный идентефикатор
PM MAIL   Вверх
leniviy
Дата 23.4.2011, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну не result , а rslt. Что, даже очевидные вещи непонятны?
PM MAIL   Вверх
dark99
Дата 23.4.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня паскаль такой? Везде ошибки находит?

n:integer;

Неизвестный идентефикатор

Это сообщение отредактировал(а) dark99 - 23.4.2011, 13:32
PM MAIL   Вверх
leniviy
Дата 23.4.2011, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вот код для turbo pascal 7
Код

{$F+}
function f_line(x: real): real;
begin
  f_line:= x;
end;
function f_arc(x: real): real;
begin
  f_arc:= Sqrt( 1 - Sqr(x) );
end;
{$F-}


const
  h: real = 0.01;
type
  Tf = function (x: real) : real;
function integral(
    _f: Pointer;
    x0, xn: real
  ): real;
var
  rslt: real;
  i: Integer;
  xi, xi1, fxi, fxi1: real;
  f: Tf;
begin
  f:= Tf(_f);
  rslt:= 0;
  xi:= x0;
  fxi:= f(xi);
  i:= 1;
  while (xi < xn) do
  begin
    xi1:= x0 + (h * i);
    if (xi1 > xn) then
      xi1:= xn;
    fxi1:= f(xi1);
    rslt:= rslt + ( h/2 * ( fxi + fxi1 ) );
    xi:= xi1;
    fxi:= fxi1;
    i:= i+1;
  end;
  integral:= rslt;
end;
begin
  writeln(integral(@f_line, 0, 1) :0:5 );
  writeln(integral(@f_arc, -1, 1) :0:5 );
end.


Это сообщение отредактировал(а) leniviy - 24.4.2011, 21:05
PM MAIL   Вверх
dark99
Дата 24.4.2011, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



0.50000
1.57021
2


так получается ответ?
PM MAIL   Вверх
leniviy
Дата 24.4.2011, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да. 1.57021 - это π/2, интеграл от функции арки от -1 до 1.
0.5 - интеграл от функции f(x) = x, от 0 до 1.
а рандом в конце я просто забыл убрать, это не ответ
PM MAIL   Вверх
dark99
Дата 24.4.2011, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

0.50000
1.57021
2




Последняя строчка меняется каждый раз на разный, если запускаешь. Все верно?
PM MAIL   Вверх
leniviy
Дата 24.4.2011, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



исправил, больше не меняется
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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