Báo cáo thực hành phương pháp tính... CHƯƠNG III: TÍNH GIÁ TRỊ HÀMBài 3: Khai báo định nghĩa hàm trong C để tính giá trị đa thức bậc n tổng quát theo sơ... trong khi |a|>eps Khai báo hà
Trang 1Báo cáo thực hành phương pháp tính
Trang 2MỤC LỤC
CHƯƠNG III: TÍNH GIÁ TRỊ HÀM 1
Bài 10: Viết chương trình xác định giá trị x1, x2 theo định lý 3 12
CHƯƠNG V: GIẢI HỆ PHƯƠNG TRÌNH 13
Bài 3: Viết chương trình giải hệ phương trình đại số tuyến tinh bằng phương pháp Gauss 14
Thuật toán: 14
Lặp i=n1 14
Chương trình: 14
Bài 4: viết chương trình giải hệ đại số tuyến tính bằng phương pháp lặp Gauss Siedel 17
Thuật toán: 17
Lặp i=1n 17
Lặp j=1n do 17
Chương trình: 17
// Thuc hien hoan chuyen hai hang cho nhau 19
S=0; 20
Bài 5: Giải phương trình đại số tuyến tính bằng phương pháp giảm dư 20
Thuật toán: 20
Chương trình: 21
Thuật toán: 25
Chương trình: 25
Bài 8: Lập trình in ra bảng sai phân 26
Thuật toán: 26
Chương trình: 27
Trang 3CHƯƠNG III: TÍNH GIÁ TRỊ HÀM
Bài 3: Khai báo ( định nghĩa) hàm trong C để tính giá trị đa thức bậc n tổng quát theo sơ
Trang 5Bài 5:Viết chương trình nhập vào 2 đa thức pn (x) bậc n , pm (x) bậc m và một giá trị c Tính pn (x) + pm (x)
Thuật toán:
- Nhập bậc của hai đa thức n,m
- Nhập hệ số của hai đa thức bậc n, m
float hoocner(float A[],int n,int m,float c);
void nhap(float A[],int n);
Trang 6printf("\n Heso A[%d]=",i);
void hoocnertq(float A[],int n,float c);
void inra(float A[],int n);
void nhap(float A[],int n);
Trang 7trong khi |a|>eps
Khai báo hàm : cos(x)
Trang 8#define MAX 20
#define eps 1e-3
/*************************************************/float sinx(float x);
float cosx(float x);
float expx(float x);
/*************************************************/void main()
Trang 10Bài 7: Viết chương trình tìm nghiệm cho các dạng tổng quát :
f(x)= a0xn + a1x n-1+ + an-1 x + an = 0
a.Áp dụng phương pháp chia đôi
b.Áp dụng phương pháp dây cung
trong khi |a-b| >eps
* Phương pháp dây cung: float daycung(float A[],int n,float a,float b) với a, b là khoảng nghiệm
float chiadoi(float A[],int n,float a,float b);
float daycung(float A[],int n,float a,float b);
float f(float A[],int n,float x);
printf("Chuongtrinh tim nghiem cua pt a(0)*x^n+a(1)*x^(n-1)+ +a(n-1)*x+a(n)=0\n");
printf("Nhap vao bac pt :");
scanf("%d",&n);
Trang 11/**************************************************/float f(float A[],int n,float x)
{ /*Ham` tinh' giatri dathuc*/
{ /*Ham` tim` nghiem gan` dung'*/
Trang 13printf("\n Chuongtrinh tim nghiem pt theo pp lap");
printf("\n Nhap 1 giatri : ");
Trang 14- Tìm m1 sao cho m1 = max{|ai|} với i=
- Tìm m2 sao cho m2 = max{|ai|} với i=
Trang 15Bài 11: Viết chương trình tìm cận trên của nghiệm dương phương trình đại số theo định lý 4.
Thuật toán:
- Nhập hàm f(x)
- Nếu a[0]>0
+ Tìm giá trị lớn nhất a = max{|ai|} với i= sao cho ai<0
+ Tìm vị trí số hạng đầu tiên đưa vào i
Trang 16CHƯƠNG V: GIẢI HỆ PHƯƠNG TRÌNH
Tìm j sao cho aij#0 (j=i+1 n)
Nếu j<=n thì hoán vị đổi dòng i và dòng j cho nhau Ngược lại kết thúc vì dữ liệu không hợp lệ
const int NMAX=10;
const double Err=0.001;
// Khai bao cac bien toan cac
Trang 17{
printf("\n -He Phuong trinh -");printf("\n Moi ban nhap n.Theo ma tran de bai ban nhap n=:");
scanf("%d",&n);
printf("\n 1.Nhap du lieu truc tiep ");
printf("\n 2.Nhap du lieu tu file ");
Trang 18// Chuyen mot tra tran ve dang duong cheo
void cheohoa(float A[NMAX][NMAX],int n){
{
// Tim nguoi thay the
Trang 19for(j=i+1;j<=n;j++)
{
if(A[j][i]!=0) // Neu tim thay nguoi thay the // Thuc hien hoan chuyen hai hang cho nhau for(k=1;k<=n+1;k++)
{ temp=A[i][k];
Trang 20const double Err=0.001;
// Khai bao cac bien toan cuc
printf("\n 1.Nhap du lieu truc tiep ");
printf("\n 2.Nhap du lieu tu file ");
{printf("\n Xuat nghiem ra man hinh de xem :");
Trang 21printf("\n Can't open this file.Please try again.");exit(1);
if(A[j][i]!=0) // Neu tim thay nguoi thay the
Trang 22// Thuc hien hoan chuyen hai hang cho nhaufor(k=1;k<=n+1;k++)
{ temp=A[i][k];
A[i][k]=A[j][k];
A[j][k]=temp;
} break; // Dung tim}
- Biến đổi hệ phương trình (1) về dạng (2)
for (i=1, i<= n, i++)
Trang 23{ r[i] = r[i] - a[i, k] * d
if (|r[i]| > ) thi t =1 /* cho lap*/
const int NMAX=10;
const double Err=0.001;
// Khai bao cac bien toan cac
printf("\n 1.Nhap du lieu truc tiep ");
printf("\n 2.Nhap du lieu tu file ");
Trang 24{printf("\n Xuat nghiem ra man hinh de xem :");
Trang 25// Step 2:bien doi hpt 1 ve dang 2
for(i=1;i<=n;i++)
{
Trang 26max=fabs(r[i]);
k=i;
} X[k]=X[k]+r[k];
/*tinh lai R[i] kiem tra kha nang lap tiep theo */ d=r[k];
for(i=1;i<=n;i++)
{ r[i]=r[i]-A[i][k]*d;
if((fabs(r[i])>=0.001)&&dem<30) t=1; }
}while(t);
return dem;
}
Trang 27CHƯƠNG VII: NỘI SUY VÀ PHƯƠNG PHÁP BÌNH PHƯƠNG BÉ NHẤT
Bài 7: Cho trước giá trị hàm tại n + 1 mốc nội suy x 0 ,x 1 .,x n Viết chương trình tính gần đúng giá trị hàm tại 1 điểm bất kỳ thuộc [x 0 ,x n ] bằng công thức nội suy Ayken.
Trang 28for(j=0;j<=n;j++) { if(i==j) a[i][j]=c-x[j];
else
a[i][j]=x[i]-x[j];
a[i][n+1]*=a[i][j];
} }
Trang 29Bài 8: Lập trình in ra bảng sai phân.
Thuật toán:
-Nhập n,y[i] (i=0 n)
-Gán giá trị y[i] cho a[i][0]
-Tính giá trị các phần tử còn lại trong nữa dưới ma trận a-Xuất nữa dưới của ma trận