Câu 1: Ta có lưu đồ sau:
Câu 2:
Đáp án:
- t=0.2wk=(0.2, 0.6, 1.3, 2.15)sum=2.15
- t=0.3wk=(0.3, 0.65, 1.325, 2.1625)sum=2.1625
- t=0.4wk=(0.4, 0.7, 1.35, 2.175)sum=2.175
- t=0.5wk=(0.5, 0.75, 1.375, 2.1875)sum=2.1875
Câu 3:
Chương trình sai:
1     PROGRAM Noi suy Lagrange
2     IMPLICIT NONE
3     INTEGER::j,n
4     REAL::i,P,xnhap
5     PRINT*,'Moi ban nhap bac cua da thuc noi suy ='
6     READ*,n
7     REAL, ALLOCATABLE::x(:),y(:)
8     Do i=0,n
9         PRINT*,'moi ban nhap x_',i,'='
10         READ*,x(i)
11         PRINT*,'moi ban nhap y_',i,'='
12         READ*,y(i)
13    END DO
14    PRINT*,'Moi ban nhap diem x ma ban muon xac dinh gia tri ham'
15    READ*,xnhap
16    P=0
17    DO i=0,n
18        L=1.
19             DO j=0,n
20                 IF i/=j THEN
21             L=L*(xnhap-x(j))/(x(i)-x(j))
22                 END IF
23             END DO
24             P=P+L*y(i)
25    END DO
26    PRINT*, 'y(',xnhap,')=', P
27    END PROGRAM
Lỗi 1: Dòng 1: "PROGRAM Noi suy Lagrange", Tên chương trình không được chứa dấu cách.
  Sửa: Program NoisuyLagrange
Lỗi 2: Dòng 4: "REAL::i,P,xnhap", Biến i là biến đếm, phải là kiểu nguyên chứ không phải là kiểu thực.
  Sửa: Đưa biến i lên khai báo ở dòng 3 chung với các biến kiểu nguyên: "INTEGER::j,n,i"
Lỗi 3: Dòng 7: "REAL, ALLOCATABLE::x(:),y(:)", Phần khai báo biến phải nằm trong phần khai báo chứ không thể nằm ở phần thân chương trình.
  Sửa: Đưa dòng 7 lên ngay sau dòng 4.
Lỗi 4: Biến x, y là biến mảng động, phải được gán giá trị cho số phần tử của mảng.
  Sửa: Thêm vào ngay sau dòng 6 của chương trình dòng lệnh sau: Allocate(x(0:n),y(0:n))
Lỗi 5: Biến L chưa được khai báo biến.
  Sửa: Khai báo thêm vào dòng 4: REAL::P,xnhap, L
Lỗi 6: Dòng 20:"IF i/=j THEN", trong cú pháp câu lệnh IF thì điều kiện phải được đặt ở trong dấu ().
  Sửa: IF (i/=j) THEN
Sau đây là chương trình đã chỉnh sửa hoàn chỉnh:
1     PROGRAM NoisuyLagrange
2     IMPLICIT NONE
3     INTEGER::j,n,i
4     REAL::P,xnhap,L
5     REAL, ALLOCATABLE::x(:),y(:)
6     PRINT*,'Moi ban nhap bac cua da thuc noi suy ='
7     READ*,n
8     ALLOCATE(x(0:n),y(0:n))
9     Do i=0,n
10         PRINT*,'moi ban nhap x_',i,'='
11         READ*,x(i)
12         PRINT*,'moi ban nhap y_',i,'='
13         READ*,y(i)
14    END DO
15    PRINT*,'Moi ban nhap diem x ma ban muon xac dinh gia tri ham'
16    READ*,xnhap
17    P=0
18    DO i=0,n
19        L=1.
20             DO j=0,n
21                 IF (i/=j) THEN
22             L=L*(xnhap-x(j))/(x(i)-x(j))
23                 END IF
24             END DO
25             P=P+L*y(i)
26    END DO
27    PRINT*, 'y(',xnhap,')=', P

 



Nhận xét này đã bị quản trị viên blog xóa.
Trả lờiXóa