|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.05.2009, 09:40 | #1 |
Форумчанин
Регистрация: 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; |
17.05.2009, 13:32 | #2 |
Форумчанин
Регистрация: 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]); |
17.05.2009, 17:03 | #3 |
Форумчанин
Регистрация: 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(); } |
17.05.2009, 17:53 | #4 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Не очень понял формулу для f.
Вот как-то так для трапеций: Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
17.05.2009, 18:05 | #5 |
Форумчанин
Регистрация: 03.05.2009
Сообщений: 112
|
Огромное студентческое спасибо!
|
17.05.2009, 19:36 | #6 |
Форумчанин
Регистрация: 03.05.2009
Сообщений: 112
|
подскажите,а что считает
I += F[0]/2 + F[n-1]/2; |
17.05.2009, 19:51 | #7 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Код:
Код:
Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
17.04.2010, 15:09 | #8 |
Регистрация: 04.02.2009
Сообщений: 4
|
Спасибо, но вот есть исходник по методу Симсона? Буду крайне благодарен.
|
17.04.2010, 15:53 | #9 |
Регистрация: 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. |
17.04.2010, 17:17 | #10 |
Пользователь
Регистрация: 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(); } |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Интеграл | 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 |