Помощь - Поиск - Пользователи - Календарь
Полная версия: Определенный интеграл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Будущий программист
Доброго времени суток.
Помогите написать программу для вычисления значения определенного интеграла методом прямоугольников,приняв число разбиений отрезка(0,1),n=80.
S=(интеграл от 0 до 1)xdx/(x^2+1^2)^2.
Кто может помогите пожалуйста,хотя бы один пример.
volvo
Будущий программист, а поиск для кого сделан?
FAQ: Численное интегрирование
Будущий программист
Цитата(volvo @ 26.10.2005 14:39)
Будущий программист, а поиск для кого сделан?
FAQ: Численное интегрирование

Volvo,спасибо большое за ответ,эту статью я уже видел,но она мне не помогла.
Текст программы я уже писал много раз,но все они неудачны,если сможете помочь,то напишите текст програмы и выложить его на форум.
volvo
To: Будущий программист
А давай наоборот - ты выложишь текст своей программы, и скажешь, что именно у тебя не получается. А мы поможем твою программу исправить... Пока кто-то будет ЗА тебя делать задания полностью - толку не будет.
Будущий программист
Program Integral;
    Var
    N,i:integer;
    A,b,shag,sum,itog:real;
    Function f(x:real);real;
       Begin
      F:=x/(x*x+1)*(x*x+1);
      End;
     Writeln(‘Начало интегрирования a=’);
     Readln(a);
     Writeln(‘Конец интегрирования b=’);
     Readln(b);
     Writeln(‘Число разбиений отрезка n=’);
     Readln(n);
    Shag:=(b-a)/n;
    Sum:=o
   For i=1 to n-1 do
    Sum:=sum+f(shag*i+a);
    Sum:=sum+(F(a)+F(b))/2;
    Itog:=(b-a)/n*sum;
   Writeln(‘Интеграл=’;itog:0:5);
  End.


Подскажите где ошибка.
Будущий программист
Подскажите,а то теорию знаю на зубок,а вот с практикой....небольшие проблемы. norespect.gif
volvo
Ошибки-то только синтаксические (я написал, что было неверно):
Program Integral;
Var
  N,i:integer;
  A,b,shag,sum,itog:real;

Function f(x:real):real; { <-- Здесь была ";" вместо ":" }
Begin
  F:=x/(x*x+1)*(x*x+1);
End;

Begin { <-- Этого не было }
  Writeln('Начало интегрирования a='); { <-- Неправильный апостроф }
  Readln(a);
  Writeln('Конец интегрирования b='); { <-- Неправильный апостроф }
  Readln(b);
  Writeln('Число разбиений отрезка n='); { <-- Неправильный апостроф }
  Readln(n);
  Shag:=(b-a)/n;
  Sum:=0; { Не буква "О", а цифра 0 }
  For i:=1 to n-1 do { <-- Пропустил ":" }
    Sum:=sum+f(shag*i+a);
  Sum:=sum+(F(a)+F(b))/2;
  Itog:=(b-a)/n*sum;
  Writeln('Интеграл=', itog:0:5); { <-- Неправильный апостроф и ";" вместо "," }
End.
Будущий программист
Спасибо volvo!!!
Эти ошибки я видел,так как только что её пробовал.
Да вот программа то,все равно интеграл не считает. wacko.gif
volvo
Дай мне те данные, которые ты вводишь... Чему у тебя равно A, B, N?

И чему (ты думаешь) должен быть равен результат ?...
Будущий программист
A=2,B=1,n=80.
Ну вроде как я нахожу определенный интеграл?Или значение должно быть другое?
volvo
To: Будущий программист
Я не спрашивал, что ты находишь!!! Я спрашивал, КАК ты определяешь, что программа отработала неверно? У меня с твоими значениями в ответе "Интеграл=0.5"

Вопрос: какое значение ТЫ считаешь правильным ???
Altair
Вообще 0.5 неверно.
0.15 должно быть

Нажмите для просмотра прикрепленного файла
©MathCAD

а какую ты функцию имел ввиду подF:=x/(x*x+1)*(x*x+1); ?
нарисуй на картинке..
Altair
а вот так:
Program Integral;
Var
  N,i:integer;
  A,b,shag,sum,itog:real;

Function f(x:real):real; { <-- Здесь была ";" вместо ":" }
Begin
  F:=x/((x*x+1)*(x*x+1)); {<----- СКОБКИ!!!!!!!!!!! }
End;

Begin { <-- Этого не было }
  Writeln('Начало интегрирования a='); { <-- Неправильный апостроф }
  Readln(a);
  Writeln('Конец интегрирования b='); { <-- Неправильный апостроф }
  Readln(b);
  Writeln('Число разбиений отрезка n='); { <-- Неправильный апостроф }
  Readln(n);
  Shag:=(b-a)/n;
  Sum:=0; { Не буква "О", а цифра 0 }
  For i:=1 to n-1 do { <-- Пропустил ":" }
    Sum:=sum+f(shag*i+a);
  Sum:=sum+(F(a)+F(b))/2;
  Itog:=(b-a)/n*sum;
  Writeln('Интеграл=', itog:0:5); { <-- Неправильный апостроф и ";" вместо "," }
  readln
End.

все верно!
0.15 при а=1 б=2, и n=80

у тебя интеграл считался от функции f(x)=x;
Будущий программист
У меня задание:
Написать программу для вычисления интеграла.

S=интеграл от 1 до 0 умноженый на xdx/(x^2+1)^1.


s=Нажмите для просмотра прикрепленного файла
Будущий программист
1.Вариант №8
1.Приведите синтаксис описания и вызова процедуры-функции.Опишите виды,назначение формальных и практических параметров.Приведите пример описания процедуры функции,её вызова и поясните его.
2.Составьте программу вычисления значения определенного интеграла S= Нажмите для просмотра прикрепленного файла
методом прямоугольников,приняв число разбиений отрезка (0;1),n=80.
2.1.Отладить и провести счет по программе.
2.2.Приведите в пояснительной записке:
1)Текст программы с поянениями.
2)Исходные данные и результаты счета.
В программе предусмотреть:
1.Ввод нижней и верхней границ отрезка(0;1),n=80.
2.Описание процедуры-функции для вычисления подинтегральной функции f(x)=Нажмите для просмотра прикрепленного файла .
3.Отображение на экране дисплея значения интеграла.
4.Комментарии в основных местах программы.
Будущий программист
Ну так что все правильно??? :smile:
volvo
To: Будущий программист
Я что-то потерял нить твоего вопроса. IMHO ему место - в корзине. Что ты хочешь? Написать программу для вычисления интеграла? Иди в FAQ и бери готовую (для этого, я хотел бы напомнить, FAQ и пишется, чтобы не изобретать велосипед заново каждый раз). Если у тебя проблема, и ты не можешь ПРАВИЛЬНО написать функцию, то к сожалению, тебя этому невозможно научить, пока ты сам не будешь более внимательным ...

Твоя функция должна иметь вид:
Function f(x:real):real;
Begin
  F:=x/((x*x+1)*(x*x+1));
End;
(обрати внимание на скобки !!!)

Кроме того, что за бред А=2, В=1?
А это начало интегрирования, и должно быть < В, иначе получишь отрицательную площадь...
Цитата
A = 1; B = 2; N = 80
Интеграл=0.15


Будь внимательнее !!!

P.S. Кстати, ты для себя бы решил, какие все-таки границы у отрезка? В посте №10 ты говоришь
Цитата
A=2,B=1,n=80.

В посте №15 (где ты привел задание):
Цитата
1.Ввод нижней и верхней границ отрезка(0;1),n=80.

Какой из них правильный ???
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.