Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main()
- {
- //f(x)=1/x
- int a, b;
- cout<<"Podaj zakres a: "<<endl;
- cin>>a;
- cout<<"Podaj zakres b: "<<endl;
- cin>>b;
- int k;
- int wybor;
- cout<<"Podaj, ktora calke chcesz obliczyc 1:f(x)=1/x 2:f(x)=x^3+3x^2-2x+1)"<<endl;
- cin>>wybor;
- if(wybor==1)
- {
- cout<<"2 - dla kwadratury dwuzwezlowej 4 - dla kwadratury czterowezlowej"<<endl;
- cout<<"Podaj wielkosc tablicy: "<<endl;
- cout<<endl;
- cin>>k;
- if(k==2)
- {
- double *x = new double [k];
- double *t = new double [k];
- double *f = new double [k];
- double Q=0;
- double s=0;
- int n=2;
- x[0]=0.577350;
- x[1]=-0.577350;
- for (int i=0; i<n; i++)
- {
- t[i]=a+b;
- t[i]+= (b-a)*x[i];
- t[i]/=2;
- }
- double *A = new double [k];
- A[0]=1;
- A[1]=1;
- //obliczenia f(t)
- for(int i=0;i<n;i++)
- {
- f[i]=1/t[i];
- }
- //obliczanie kwadratury
- for(int i=0;i<n;i++)
- {
- s=A[i]*f[i]+s;
- }
- Q=b-a;
- Q=Q/2;
- Q=Q*s;
- cout<<"Kwadratura dwuwezlowa dla calki f(x)=1/x w zakresie ["<<a<<","<<b<<"] wynosi: "<<Q<<endl;
- }
- if(k==4)
- {
- double *x = new double [k];
- double *t = new double [k];
- double *f = new double [k];
- double Q=0;
- double s=0; //zmienna pomocnicza
- int n=4;
- x[0]=-0.861136;
- x[1]=-0.339981;
- x[2]=0.339981;
- x[3]=0.861136;
- for (int i=0; i<n; i++)
- {
- t[i]=a+b;
- t[i]+= (b-a)*x[i];
- t[i]/=2;
- }
- double *A = new double [k];
- A[0]= 0.347855;
- A[1]= 0.652145;
- A[2]= 0.652145;
- A[3]= 0.347855;
- //obliczenia f(t)
- for(int i=0;i<n;i++)
- {
- f[i]=1/t[i];
- }
- //obliczanie kwadratury
- for(int i=0;i<n;i++)
- {
- s=A[i]*f[i]+s;
- }
- Q=b-a;
- Q=Q/2;
- Q=Q*s;
- cout<<"Kwadratura czterowezlowa dla calki f(x)=1/x w zakresie ["<<a<<","<<b<<"] wynosi: "<<Q<<endl;
- }
- }
- //f(x)=x^3+3x^2-2x+1)
- if(wybor==2)
- {
- cout<<"Kocham"<<endl;
- cout<<"2 - dla kwadratury dwuzwezlowej 4 - dla kwadratury czterowezlowej"<<endl;
- cout<<"Podaj wielkosc tablicy: "<<endl;
- cout<<endl;
- cin>>k;
- if(k==2)
- {
- double *x = new double [k];
- double *t = new double [k];
- double *f = new double [k];
- double Q=0;
- double s=0;
- int n=2;
- x[0]=0.577350;
- x[1]=-0.577350;
- for (int i=0; i<n; i++)
- {
- t[i]=a+b;
- t[i]+= (b-a)*x[i];
- t[i]/=2;
- }
- double *A = new double [k];
- A[0]=1;
- A[1]=1;
- //obliczenia f(t)
- for(int i=0;i<n;i++)
- {
- //f(x)=x^3+3x^2-2x+1)
- f[i]=t[i]*t[i]*t[i]+3*t[i]*t[i]-2*t[i]+1;
- }
- //obliczanie kwadratury
- for(int i=0;i<n;i++)
- {
- s=A[i]*f[i]+s;
- }
- Q=b-a;
- Q=Q/2;
- Q=Q*s;
- cout<<"Kwadratura dwuwezlowa dla calki f(x)=x^3+3x^2-2x+1 w zakresie ["<<a<<","<<b<<"] wynosi: \n"<<Q<<endl;
- }
- if(k==4)
- {
- double *x = new double [k];
- double *t = new double [k];
- double *f = new double [k];
- double Q=0;
- double s=0; //zmienna pomocnicza
- int n=4;
- x[0]=-0.861136;
- x[1]=-0.339981;
- x[2]=0.339981;
- x[3]=0.861136;
- for (int i=0; i<n; i++)
- {
- t[i]=a+b;
- t[i]+= (b-a)*x[i];
- t[i]/=2;
- }
- double *A = new double [k];
- A[0]= 0.347855;
- A[1]= 0.652145;
- A[2]= 0.652145;
- A[3]= 0.347855;
- //obliczenia f(t)
- for(int i=0;i<n;i++)
- {
- int x=t[i]*t[i]*t[i];
- f[i]=x*3*t[i]*t[i];
- f[i]-=2*t[i]+1;
- }
- //obliczanie kwadratury
- for(int i=0;i<n;i++)
- {
- s=A[i]*f[i]+s;
- }
- Q=b-a;
- Q=Q/2;
- Q=Q*s;
- cout<<"Kwadratura czterowezlowa dla calki f(x)=x^3+3x^2-2x+1 w zakresie ["<<a<<","<<b<<"] wynosi: \n"<<Q<<endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement