Em co đề bài sau mong mọi người giúp đỡ:
Cho hàm f(x) xác định,liên tục trên [a,b]và có f(a)*f(b)<0.Tìm nghiệm của phương trinh f(x)=0 trên khoảng (a,b) với sai số Epsilon cho trước.F(x) được khai báo như một hàm.Ví dụ: f(x)=x*x*x+x*x+x+1, và [1,0]
yêu cầu bắt buộc:
DỮ liệu đầu vào gán sẵn trong chương trình theo mẫu
Dữ liệu đầu ra đưa ra màn hình
Bạn có thể làm theo như sau:
B1:Gán c=(a+b)/2;
Nếu f(c)=0=>c là nghiệm của pt.
Nếu f(a)*f(c)<0 thì gán b=c,quay lại b1;
Nếu f(c)*f(b)<0 thi a=c,quay lại bước 1;
Tiếp tục cho đến khi f(c)=0 hoặc |a-b|<e thì ta lấy c là nghiệm gần đúng với sai số là e.
Hình như hàm của bạn sai rồi, pt đó không có nghiệm trong [0,1].
C Code:
#include <stdio.h> #include <conio.h> #include <math.h> float ham(float a); float ham(float a) { float kq; kq=a*a*a+a*a+a+1; return kq; } void main() { float a,b,c,x,e,t; a=-2;b=0; c=(a+b)/2; while (t>e) { if (ham(a)*ham(c)<0) b=c; if (ham(b)*ham(c)<0) a=c; c=(a+b)/2; } getch(); }
Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 15-03-2008 lúc 01:17 PM. Lý do: Vui lòng, đưa code vào tag code chứ không phải là quote
Yêu lắm Cesc![]()
![]()
![]()
![]()