30/09/2018, 19:17
Sai số khi tính toán
Chào cac bạn,
Các bạn giúp mình vấn đề này với
Mình gặp vấn đề về số thập phân giữa MATLAB và C++. Công thức số đã nhập thì đúng rồi, nhưng kết quả lại chạy khác
Dưới đây là vấn đề mình đang gặp:
Mong các bạn đưa ra hướng giải quyết giúp mình
Bài liên quan
2 dòng result giống nhau hết mà? Sai ở chỗ result[3] = 0 à? Cái công thức ở dưới xài v0 có thấy v0 ở đâu đâu
À.
Mình thấy rồi. Cám ơn Trí thật nhiều nha.
Hôm qua khuya buồn ngủ quá gõ lộn
Công thức của mình như thế này:
Hóa ra là giống nhau. ^^’
Còn 1 vấn đề mình thắc mắc:
Khi mình tính trên MATLAB thì kết quả là:
Còn khi mình tính trên C++ thì kết quả là:
Tại sao khi gần giống kết quả mà cách hiển thị lên màn hình lại khác nhau vậy bạn, như vậy nó có ảnh hưởng gì đến tính toán của mình không?
sai số nhỏ quá thì ko ảnh hưởng gì nhiều đâu. Số thực kiểu
double
thì có độ chính xác tới 15-16 chữ số, như vậy sai số còn bé hơn 1 phần triệu tỷ của số đó, ví dụ 1016 (10 triệu tỷ) và (1016 - 1) thì sai số là 1 đơn vị, nhưng so với 10 triệu tỷ thì 1 chả là gì cả. Chỉ khi xàifloat
thì độ chính xác chỉ có tầm 7.22 số, như vậy có thể sai số 1 phần 100 triệu có thể có vấn đề nếu bị dồn, gọi là local truncation error: sai số của 1 iteration có thể dồn lại thành sai số lớn. Cái này xàifloat
thì gặp rất nhiều, xàidouble
thì ít gặp hơn. Code của bạn xàidouble
chắc ko gặp vấn đề này.về độ chinh xác của số thực thì wiki có đây: https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
Ok. Mình hiểu rồi.
Cám ơn bạn thật nhiều nha.
Làm mình đau đầu suốt mấy ngày nay.