Gia sư Cần Thơ, Dạy Kèm Cần Thơ

VỮNG TIN - TIẾP BƯỚC - THÀNH CÔNG


Tính gần đúng tích phân xác định bằng công thức hình thang

Share
avatar
admin
Admin
Admin

Tổng số bài gửi : 1207
Points : 3010
Join date : 11/11/2009
Age : 36
Đến từ : Cần Thơ

Tính gần đúng tích phân xác định bằng công thức hình thang

Bài gửi  admin on Sat May 05, 2012 3:15 pm

Code:
#include "math.h"
#include "conio.h"
#include "iostream.h"
/*Nhap vao mot da thuc luu he so trong A[] va co Bac*/
double*NhapDaThuc(int Bac) {
   double *A = new double [Bac+1];
   for(int i= 0; i<=Bac; i++) {
      cout<<"a"<<i<<" = ";
      cin>>A[i];
   }
   return A;
}

/*Xuat da thuc co he so A[] va Bac*/
void XuatDaThuc( double*A,int Bac, char*s) {
   cout<<"Da Thuc Vua Nhap la:\n";
   cout<<s<<" = "<<A[0];
   for(int i=1; i<=Bac; i++){
      if(A[i]>0)
         cout<<" + "<<A[i]<<"x^"<<i;
      if(A[i]<0)
         cout<<A[i]<<"x^"<<i;
   }
}

/*Tinh gia tri cua da thuc tai diem x*/
double f(double*A, int Bac, double x) {
    double KetQua = A[Bac];
   for(int i=Bac-1; i>=0; i--)
      KetQua=KetQua*x + A[i];
   return KetQua;
}

/*Công thức hình thang tính tích phân  .*/
double CongThucHinhThang(double*A,int Bac, double a, double b, int n) {
   double h = (b-a)/n;
   double KetQua=0;
   double*F = new double [n+1];
   for(int i=0;i<=n;i++)
      F[i]=f(A,Bac,a+i*h);
   for(i = 1;i<n;i++)
      KetQua+=F[i];
   KetQua = h*((F[0]+F[n])/2 + KetQua);
   delete F;
   return KetQua;
}

/*Công thức hình thang tính tích phân , với f(x) là đa thức bậc Bacf, g(x) là đa thức bậc Bacg*/
double CongThucHinhThang( double*Fx,int BacFx, double*Gx,
            int BacGx,double a, double b, int n) {
   double h = (b-a)/n;
   double KetQua=0;
   double*F = new double [n+1];
   for(int i=0; i<=n;i++) {
      if (f(Gx,BacGx,a+i*h) == 0) {
         cout<<"\nHam f(x)/g(x) khong lien tuc tren [a,b]";
         return -1;
      }
      else {
         F[i]=f(Fx,BacFx,a+i*h)/f(Gx,BacGx,a+i*h);
      }
   }
   for(i = 1; i<n; i++)
      KetQua+=F[i];
   KetQua = h*((F[0]+F[n])/2 + KetQua);
   delete F;
   return KetQua;
}

/*Chuong Trinh Chinh*/
void main() {
   clrscr();
   double*Fx,a,b,Epxilon;
   int Bacf,n;
   cout<<"Nhap Vao Bac Cua Da Thuc:";
   cin>>Bacf;
   Fx = NhapDaThuc(Bacf);
   XuatDaThuc(Fx,Bacf,"f(x)");
   cout<<"\nNhap Can Tich Phan a Den b:\n";
   cout<<"a = ";
   cin>>a;
   cout<<"b = ";
   cin>>b;
   cout<<"Nhap Vao So Doan Chia n = ";
   cin>>n;
   cout<<"I = "<<CongThucHinhThang(Fx,Bacf,a,b,n);
   getch();
   delete Fx;
}


Gia sư Alpha
------------------------------------------------------------------------------------
Điện thoai: 07106 255 599 - 0932 836 026 - 0987 700 288
Website: http://giasualpha.com
Email: giasualpha@gmail.com
------------------------------------------------------------------------------------

    Hôm nay: Mon Dec 18, 2017 9:39 pm