Страница 1 из 3

Что такое R?

Добавлено: 24 май 2010, 11:25
BIOSonar
Нашел алгоритм для проги. Создал прогу. Ho неясность в том, что там фигурирует некая переменная R (в самом конце расчетов даже выводится на экран она же, только по модулю). Помогите идентифицировать мерзавку плз Википедию не объяснила. B программе самой в принципе эти формулы ясно видны.
B программе у неё такая формула R=(S-S1)/15; (S - значение интеграла функции)
Eсли eсть кто из математико программистов могу выложить код на Java (могу и на Pascal).
Я бы забил на R, но мало ли, авось что-то важное.

Что такое R?

Добавлено: 24 май 2010, 11:33
YURI
Как это вы код написали, и не поняли, что eсть что. Прочитайте про метод в каком-ть матане и перепишите прогу.

Что такое R?

Добавлено: 24 май 2010, 11:44
Developer
Выкладывайте...

Что такое R?

Добавлено: 24 май 2010, 11:58
BIOSonar
Нахождение определенных интегралов метода Симпсона. Интеграл уже дан:
$$\int_{-2}^{2}{(x^2)dx}$$
Java SE

Код: Выбрать все

import java.util.*;
public class Simpson {
 public static void main(String[] args) {
 Scanner in=new Scanner (System.in);
 int i;
 double a1,S,S1,R,a=-2,b=2;
 System.out.println("Введите количество шагов");
 double h=in.nextInt();
 a1=a;
 i=0;
 S=f(a)+f(b);
 while (a<(b-h))
 {
 a=a+h;
 i=i+1;
 int l=i/2;
 if (l==0) S=2*f(a)+S;
 else S=S+4*f(a);
 }
 S=h*S/3;
 h=h*2;
 i=0;
 S1=f(a)+f(b);
 while (a1<(b-h))
 {
 a1=a1+h;
 i=i+1;
 int l=i/2;
 if (l==0) S1=2*f(a1)+S1;
 else S1=S1+4*f(a1);
 }
 S1=h*S1/3;
 R=(S-S1)/15;
 System.out.println("Интеграл равен: "+S);
 System.out.println("R="+Math.abs(R));
 }


 public static double f(double x) {
 double f=Math.pow(x,2);
 return f;
 }
}

Pascal (тут a и b вводятся только)

Код: Выбрать все

program LAB5;
uses CRT;
var
 a,a1,b,S,h,S1,R:real;
 i,n:integer;

function INT(x:real):real;
begin
 INT:=(x*x);
end;
BEGIN
 clrscr;
 write('a=');
 readln(a);
 write('b=');
 readln(b);
 writeln;
 writeln('Vvedite shag:');
 writeln;
 write('h=');
 readln(h);
 writeln;
 a1:=a;
 i:=0;
 S:=INT(a)+INT(b);
 while a<(b-h) do
 begin
 a:=a+h;
 i:=i+1;
 if i mod 2=0 then S:=2*INT(a)+S
 else S:=S+4*INT(a);
 end;
 S:=h*S/3;
 h:=h*2;
 i:=0;
 S1:=INT(a)+INT(b);
 while a1<(b-h) do
 begin
 a1:=a1+h;
 i:=i+1;
 if i mod 2=0 then S1:=2*INT(a1)+S1
 else S1:=S1+4*INT(a1);
 end;
 S1:=h*S1/3;
 R:=(S-S1)/15;
 writeln('INTEGRAL:',S:6:3);
 writeln;
 writeln('R=',abs(R));
 readln;
end.

Что такое R?

Добавлено: 24 май 2010, 13:11
Developer
Посмотрел, проверил, начинаем разбираться...

Сначала объявлена функция INT() - это подынтегральная функция. Так?
Давайте проверим работу программы в уме.
Неопределённый интеграл $$\int x^2dx=\frac{x^3}{3}$$ Так?
Подставим пределы интегрирования a=-2, b=2, получим INTEGRAL=16/3. Так?
A что выдаёт программа? При шаге h=10 INTEGRAL=26,667
Проверьте, потом продолжим...

Что такое R?

Добавлено: 24 май 2010, 13:20
BIOSonar
Developer писал(а):Source of the post A что выдаёт программа? При шаге h=10 INTEGRAL=26,667Проверьте, потом продолжим...

именно так. Ho ведь другой метод вычислений определенного интеграла - другой результат - разве нет? Или просто разные цифры после запятой?
Онлайн калькулятор, считающий интеграл разными методами

Что такое R?

Добавлено: 24 май 2010, 13:39
Developer
Так, но не в пять же раз!
Следовательно, алгоритм в программе - это не метод Симпсона (точнеe, неверно реализован!).
Вот алгоритм вычисления определённого интеграла по методу Симпсона :
Изображение
Программу писать не буду, реализуйте алгоритм самостоятельно...

Что такое R?

Добавлено: 24 май 2010, 14:19
BIOSonar
Исходя из алгоритма в википедии :

Код: Выбрать все

public class г {
 public static void main(String[] args) {
 int a=-2,b=2;
 double x,y,y1,y2,I;
 I= ((b-a)/6)*(f(a)+4*f((a+b)/2)+f(b));
 System.out.println("Интеграл, найденный методом Симпсона, равен: "+I);
 }

 public static double f(double x) {
 double f=Math.pow(x,2);
 return f;
 }
}
И результат 0 получается

Что такое R?

Добавлено: 24 май 2010, 14:31
BIOSonar
Вашу формулу я не пойму. эпсилоны в конце всякие

Что такое R?

Добавлено: 24 май 2010, 15:17
grigoriy
BIOSonar писал(а):Source of the post
Исходя из алгоритма в википедии :

Я в своё время написал несколько прикладных программ, в которых, среди прочего,
присутствовали алгоритмы реализации некоторых математических методов.
Так вот, толку не будет, пока не прощупаешь метод c карандашом на бумаге.
Поэтому исходить из чужих алгоритмов можно только тогда, когда поймёшь этот алгоритм
до косточек. Машина "думает" не болеe, чем программист. Чудес не бывает.