Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2009, 09:40   #1
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию вычислить интеграл в C++

Подскажите плз как значения функции записать в массив и связать с интегралом.

Даны вещественные числа a, b. Значения функции записать в массив. Вычислить значение интеграла, используя:
1) Формулу трапеций
I1=h*[f(a)/2+f(a+h)+f(a+2h)+…+f(a+(n-1)h)+f(b)/2]
2) Формулу Симпсона
I2=h/3*(f(a)+f(b)+4*(f(a+h)+f(a+3h)+…+f( a+(n-1)h))+
2*(f(a+2h)+f(a+4h)+…+f(a+(n-2)h)))
h=(b-a)/n, n=100.
f(x)=1/((0.5+0.1x3)√x); a=0.1; b=2.1;
ai\ekcah^p вне форума Ответить с цитированием
Старый 17.05.2009, 13:32   #2
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию

дайте пожалуйста рекомендации по решению.
сначало
#include <math.h>
#include <stdio.h>
#include <conio.h>
const int n=100;
main()
{
double array[3];
int i;
{
for (i=0;i<3;++i)
array[i]=f(x[i]);
ai\ekcah^p вне форума Ответить с цитированием
Старый 17.05.2009, 17:03   #3
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию

неполучается(
дайте пожалуйста рекомендации по решению.

#include <math.h>
#include <stdio.h>
#include <conio.h>
#define a 0.1;b 2.1;
int main()
{
double array[4],x,h.I1,I2;
int i,n;
for (n=0;n<=100;++n)
(h=(b-a)/n);
f(x[1])=1/((0.5+0.1*pow(a,3))*sqrt(a));//x=a
f(x[2])=1/((0.5+0.1*pow(b,3))*sqrt(b));//x=b
f(x[3])=1/((0.5+0.1*pow(a+(n-1)*h,3))*sgrt(a+(n-1)*h); //x=a+(n-1)*h
f(x[4])=1/((0.5+0.1*pow(a+(n-2)*h,3))*sgrt(a+(n-2)*h); //x=a+(n-2)*h

I1=h*(f(x[3])+f(x[2])/2);
I2=h/3*(f(x[3])+2*f(x[4]));
printf("\n %d%d",&I1,&I2);
getch();
}
ai\ekcah^p вне форума Ответить с цитированием
Старый 17.05.2009, 17:53   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Не очень понял формулу для f.
Вот как-то так для трапеций:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>

int main()
{
const int n=100;
double a=0.1, b=2.1;
double h;
double F[n],I;
int i;
h=(b-a)/n;
for(i=0;i<n;++i)
 F[i] = //здесь вставьте нужное

I = 0;
for(i=1;i<n-1;i++)
 I += F[i];
I += F[0]/2 + F[n-1]/2;
I *= h;

printf("%lf\n",I);

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.05.2009, 18:05   #5
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию

Огромное студентческое спасибо!
ai\ekcah^p вне форума Ответить с цитированием
Старый 17.05.2009, 19:36   #6
ai\ekcah^p
Форумчанин
 
Аватар для ai\ekcah^p
 
Регистрация: 03.05.2009
Сообщений: 112
По умолчанию

подскажите,а что считает
I += F[0]/2 + F[n-1]/2;
ai\ekcah^p вне форума Ответить с цитированием
Старый 17.05.2009, 19:51   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
подскажите,а что считает
I += F[0]/2 + F[n-1]/2;
У вас формула:
Код:
I1=h*[f(a)/2+f(a+h)+f(a+2h)+…+f(a+(n-1)h)+f(b)/2]
Вот тут:
Код:
for(i=1;i<n-1;i++)
 I += F[i];
мы считаем синее, а тут
Код:
I += F[0]/2 + F[n-1]/2;
- прибавляем зеленое
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 17.04.2010, 15:09   #8
kyros
 
Регистрация: 04.02.2009
Сообщений: 4
По умолчанию

Спасибо, но вот есть исходник по методу Симсона? Буду крайне благодарен.
kyros вне форума Ответить с цитированием
Старый 17.04.2010, 15:53   #9
kyros
 
Регистрация: 04.02.2009
Сообщений: 4
По умолчанию

#include <vcl.h>
#include <math.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop

using namespace std;

//Подынтегральная функция
double func(double x)
{
double r = sin(x);
r = 1. - r*r/4.;
return r;
}
double simpson( double (*Fx)(double), double a,

double b, int m);

#pragma argsused
int main(int argc, char* argv[])
{
double I;
double a,b;
int m;

cout << "\n Input integral atributes:\n" << endl;
cout << "\t-> Enter a = ";
cin >> a;

cout << "\t-> Enter b = ";
cin >> b;

cout << "\t-> Enter m = ";
cin >> m;

// вычисление интеграла

I = simpson( &func, a, b, m );

// вывод результата
cout << endl << " I = " << I;
getch();
}

//--------------------------------------------------

-------------------------
// Метод симпсона
double simpson( double (*Fx)(double), double a,

double b, int m)
{

double h;
h=(b-a)/m;

double I, I2 = 0, I4 = 0;
I4 = Fx(a+h);
for(int k = 2; k < m; k += 2 )
{
I4 += Fx(a+(k+1)*h);
I2 += Fx(a+k*h);
}
I = Fx(a)+Fx(b)+4*I4+2*I2;
I *= h/3;

return I;
}
Вот есть код, кто может переделать на C#

я начал переделывать вот так вижу что не правильно тк Fx это метод. плз помогите разобраться.
{
{
h = (b - a) / n;


I4 = Fx*(a + h);
for (int k = 2; k < n; k += 2)
{
I4 += Fx*(a + (k + 1) * h);
I2 += Fx*(a + k * h);
}
I = Fx*(a) + Fx*(b) + 4 * I4 + 2 * I2;
I *= h / 3;

tbx6.Text = "Ответ " + Convert.ToString(I);
}
}

Последний раз редактировалось kyros; 17.04.2010 в 15:55.
kyros вне форума Ответить с цитированием
Старый 17.04.2010, 17:17   #10
klykovka
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 33
По умолчанию

или вот только функцию и значения свои поставь
#include<stdio.h>
#include<math.h>
#include<conio.h>
#define n 100
const double a=2.0, b=10.0;
const double h=(b-a)/n;
double func[n+1];
double f(double x)
{
clrscr();
return(x+1)*2*sqrt(log10(x));
}
double trapecii()
{
double result=0.0;
for(int i=0; i<n; ++i)
result+=(func[i]+func[i+1])*h/2;
return result;
}
double simpson()
{
double result=0.0;
result+=(func[0]+func[n])*h/3;
for(int i=1; i<n; i+=2)
result +=4*h/3*func[i];
for( i=2; i<n; i+=2)
result +=2*h/3*func[i];
return result;
}
void main()
{
for(int i=0; i<=n; ++i)
func[i]=f(a+i*h);
double I1, I2;
I1=trapecii();
I2=simpson();
printf("%f\n%f\n",I1,I2);
scanf("%F%f",I1,I2);
getch();
}
klykovka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интеграл bkm03262 Паскаль, Turbo Pascal, PascalABC.NET 1 09.05.2009 14:50
Интеграл StudeHt Паскаль, Turbo Pascal, PascalABC.NET 0 21.04.2009 14:37
Определенный интеграл. J0n1cK Паскаль, Turbo Pascal, PascalABC.NET 1 16.04.2009 11:30
ИНТЕГРАЛ(( oblachko Помощь студентам 4 21.01.2009 16:00