#include <iomanip>
#include <iostream>
#include <cstdlib>
using namespace std;
double metoda_prostokatow(double x)
{
return 1.8 * x * x * x + 3.1 * x * x - 8.5 * x + 4;
}
double metoda_trapezow(double x)
{
return 1.8 * x * x * x + 3.1 * x * x - 8.5 * x + 4;
}
double metoda_Simpsona(double x)
{
return 1.8 * x * x * x + 3.1 * x * x - 8.5 * x + 4;
}
int main()
{
const int N = 1000; //liczba punktów/prostokątów podziałowych
double xp,xk,s,dx,sT,sS,x;
int i,j,k;
cout << setprecision(3) // 3 cyfry po przecinku
<< fixed; // format stałoprzecinkowy
cout << "------------------------------------------------------\n";
cout << "Obliczanie calki oznaczonej za pomoca wybranych metod\n"
"------------------------------------------------------\n"
"1.8 * x * x * x + 3.1 * x * x - 8.5 * x + 4\n\n"
"Podaj poczatek przedzialu calkowania\n\n"
"xp = ";
cin >> xp;
cout << "\nPodaj koniec przedzialu calkowania\n\n"
"xk = ";
cin >> xk;
cout << endl;
sT = 0;
dx = (xk - xp) / N;
for(j = 1; j < N; j++) sT += metoda_prostokatow(xp + j * dx);
sT = (sT + (metoda_prostokatow(xp) + metoda_prostokatow(xk)) / 2) * dx;
cout << "Wartosc dokladna calki wynosi: " << setw(7) << sT
<< endl << endl;
cout << "Metoda prostokatow z niedomiarem: \n"; // Tu pewnie w pętli trzeba dać iterator = 0, a przy porównywaniu < N-1
cout << "Metoda prostokatow z nadmiarem: \n"; // Tu pewnie w pętli musi być iterator = 1, a przy porównywaniu < N
s = 0;
dx = (xk - xp) / (const int)N;
for(i = 1; i < N; i++)
s += metoda_trapezow(xp + i * dx);
s *= dx;
cout << "\nMetoda trapezow: \n"; // Jest tu jakiś mały błąd, bo źle liczy
cout << "Wartosc dokladna calki wynosi: " << setw(7) << s
<< endl << endl;
s = 0; sS = 0;
dx = (xk - xp) / N;
for(k = 1; k <= N; k++)
{
x = xp + k * dx;
sS += metoda_Simpsona(x - dx / 2);
if(k < N)
s += metoda_Simpsona(x);
}
s = dx / 6 * (metoda_Simpsona(xp) + metoda_Simpsona(xk) + 2 * s + 4 * sS);
cout << "Metoda Simpsona: \n";
cout << "Wartosc calki wynosi: " << setw(7) << s
<< endl << endl;
system("pause");
return 0;
}
Replies to całki
Title |
Name |
Language |
UNIX |
When |
Re: całki |
KarboN |
text |
1589535251 |
3 Years ago. |
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}