|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 (permalink) |
Member
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]() а) Вычислить заданный интеграл при n=10. б) Вычислить значение заданного интеграла при n=20, 30, 40, …, 100. Результаты показать в виде таблицы на экране и в файле; Если я применю эту программу будет ли она работать и будет ли правильним ответ? и чтобы была таблица на экране и в файле. Я пока не могу проверить. Подскажите пожалуйста. Если нет , то исправте, пожалуйста. const a=0;{нижний предел} b=1;{верхний предел} n=10; function f(x:real):real; begin f:=1+ sqrt(х)*(2+sin^2x); end; function integral(a,b:real):real; var h,k,s,y:real; i:integer; begin h:=(b-a)/n; s:=(f(a)+f(b))/2; k:=a; for i:=1 to n-1 do begin k:=k+h; s:=s+f(k); end; s:=s*h; integral:=s; Writeln('Длина шага равна: ',h:0:4);{ тут я не знаю правильно или нет} end; begin Writeln('Нижний предел: ',a: ); { тут возле а должна быть цыфра я не знаю какая } Writeln('Верхний предел: ',b ![]() writeln('Интеграл методом трапеции = ', integral(a,b):0:5); end. |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Вот список тем, которые очень похожи на вашу Паскаль. Решить СНАУ методом Ньютона-Рафсона Интегрирование методом средних прямоугольников в Delphi Паскаль. Численное интегрирование Паскаль, подпрограммы функций Паскаль АВС, сортировка в одномерном массиве без функций и операций |
![]() |
#2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Нет, в таком виде не будет.
Пределы интегрирования лучше задать в вещественном формате, а значит написать так: const a=0.0;{нижний предел} b=1.0;{верхний предел} Величину n вообще не следует задавать в виде константы: ведь Вам нужно будет считать интеграл при разных значениях разбиения. В Паскале нет символа ^, точнее, есть, но он используется совсем для другого (обозначает указатель при работе с динамическими переменными), а вовсе не как знак возведения в степень. Поэтому функцию следует задать так: f:=1+ Sqrt(х)*(2+Sqr(sin(x)));Поскольку нижний и верхний предел у Вас заданы как константы, нет смысла задавать их, как параметры функции. А вот число шагов разбиения - другое дело. Я бы задал так: function integral(n:integer):real; Правильно. Вообще - разбирайтесь с форматами вывода целых и вещественных чисел. Ничего там сложного нет.Да... так же, как и в других выводах. Например, :0:4. С учетом вышесказанного: Код:
const a=0.0;{lower limit} b=1.0;{upper limit} function f(x:real):real; begin f:=1+Sqrt(x)*(2.0+Sqr(sin(x))); end; function integral(m:integer):real; var h,k,s:real; i:integer; begin h:=(b-a)/m; s:=(f(a)+f(b))/2; k:=a; for i:=1 to m-1 do begin k:=k+h; s:=s+f(k); end; s:=s*h; integral:=s; end; Var n,j:Integer; Begin Writeln(' n Integral'); for j:=1 to 10 do begin n:=j*10; writeln(n:7, integral(n):16:6); end; Readln End. |
![]() |
![]() |
![]() |
#4 (permalink) |
Member
Регистрация: 24.03.2016
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
Посмотрите пожалуйста на метод Зэйделя. Я узнал что надо.
|
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|