Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 28.04.2013, 20:11   #1 (permalink)
borntank
Member
 
Регистрация: 26.04.2013
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию При различных значениях параметра z, входящего в выражение для функции f(x)

1-1.jpg
Метод средних прямоугольников
1-2.jpg
borntank вне форума   Ответить с цитированием

Старый 28.04.2013, 20:11
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Встречал подобные посты ранее, вы можете их прочитать

Функции
Стив Балмер снова обещает выход различных устройств от Microsoft
Пытаюсь создать выражение, но где-то ошибка
Все замирает на различных этапах загрузки и BlueScreen
Посчитать количество различных цифр в записи. Паскаль, программа почти написана.
Разложение функции Y в ряд S

Старый 28.04.2013, 20:17   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,298
Сказал(а) спасибо: 290
Поблагодарили 512 раз(а) в 169 сообщениях
Репутация: 93301
По умолчанию

Идём сюда и меняем в программе функцию, первообразную пределы, а также слегка - процедуру, чтобы от трапеции перейти к прямоугольникам. Всё!
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 28.04.2013, 20:57   #3 (permalink)
borntank
Member
 
Регистрация: 26.04.2013
Сообщений: 15
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Код:
program p;
Const
 a=0.15;
 b=0.75;

function F(x1,z1:Real):Real;
begin
 F:=x1*(Sqrt(x1^2+z1^2));
end;

function Antiderivative(x1,z1:Real):Real;
begin
 Antiderivative:=1/3*(Sqrt(power(3,x1^2+z1^2));
end;

procedure rect(zt,et:real; var T:real; var Nt:Integer);
var
 i,N:Integer;
 Sum1,Sum2,h:Real;
begin
 N:=5;
 h:=(b-a)/N;
 Sum1:=(F(a,zt)+F(b,zt))/2*h;
 for i:=1 to N-1 do
  Sum1:=Sum1+h*F(a+h*i,zt);
 Sum2:=Sum1;
 repeat
  Sum1:=Sum2;
  N:=N*2;
  h:=(b-a)/N;
  Sum2:=(F(a,zt)+F(b,zt))/2*h;
  for i:=1 to N-1 do
   Sum2:=Sum2+h*F(a+h*i,zt);
 until ABS(Sum2-Sum1)<et;
 Nt:=N;
 T:=Sum2;
end;

var
 i,j,M:Integer;
 z,R,Eps:real;
begin
 write('z= ');
 readln(z);
 eps:=0.1;
 for j:=1 to 4 do
  begin
   eps:=Eps/10;
   trapezium(z,Eps,R,M);
   writeln('Eps= ',Eps:8);
   writeln('Number of steps= ',M);
   writeln('Result: ',R:0:9);
   writeln;
  end;
 writeLn('Accurate value:', (Antiderivative(b,z)-Antiderivative(a,z)):0:9);
 ReadLn;
end.
в процедуре не знаю что менять(
borntank вне форума   Ответить с цитированием
Старый 28.04.2013, 21:14   #4 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,298
Сказал(а) спасибо: 290
Поблагодарили 512 раз(а) в 169 сообщениях
Репутация: 93301
По умолчанию

Цитата:
Сообщение от borntank Посмотреть сообщение
в процедуре не знаю что менять(
Ладно, раз уж хоть что-то сделано самостоятельно... Правда, сдается мне, что Паскаль конструкций вида х1^2 напрочь не поймёт, ну да ладно:
Код:
Const
 a=0.15;
 b=0.75;

function F(x1,z1:Real):Real;
begin
 F:=x1*Sqrt(Sqr(x1)+Sqr(z1));
end;

function Antiderivative(x1,z1:Real):Real;
begin
 Antiderivative:=1/3*Sqrt((Sqr(x1)+Sqr(z1))*(Sqr(x1)+Sqr(z1))*(Sqr(x1)+Sqr(z1)));
end;

procedure rect(zt,et:real; var T:real; var Nt:Integer);
var
 i,N:Integer;
 Sum1,Sum2,h:Real;
begin
 N:=5;
 h:=(b-a)/N;
 Sum1:=0;
 for i:=0 to N-1 do
  Sum1:=Sum1+h*F(a+h*i+h/2,zt);
 Sum2:=Sum1;
 repeat
  Sum1:=Sum2;
  N:=N*2;
  h:=(b-a)/N;
  Sum2:=0;
  for i:=0 to N-1 do
   Sum2:=Sum2+h*F(a+h*i+h/2,zt);
 until ABS(Sum2-Sum1)<et;
 Nt:=N;
 T:=Sum2;
end;

var
 j,M:Integer;
 z,R,Eps:real;
begin
 write('z= ');
 readln(z);
 eps:=0.1;
 for j:=1 to 4 do
  begin
   eps:=Eps/10;
   rect(z,Eps,R,M);
   writeln('Eps= ',Eps:8);
   writeln('Number of steps= ',M);
   writeln('Result: ',R:0:9);
   writeln;
  end;
 writeLn('Accurate value:', (Antiderivative(b,z)-Antiderivative(a,z)):0:9);
 ReadLn;
end.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 23:18.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.