Tôi có một getSlope chức năng mà mất như thông số 4 đôi và trả về một đôi tính toán sử dụng này thông số được đưa ra trong các cách sau:mất bất ngờ độ chính xác khi chia đôi
double QSweep::getSlope(double a, double b, double c, double d){
double slope;
slope=(d-b)/(c-a);
return slope;
}
Vấn đề là khi gọi chức năng này với đối số ví dụ:
getSlope(2.71156, -1.64161, 2.70413, -1.72219);
kết quả trả về là:
10.8557
và đây không phải là kết quả tốt cho tính toán của tôi. tôi đã tính toán độ dốc sử dụng Mathematica và kết quả cho độ dốc cho các thông số tương tự là:
10.8452
hoặc với nhiều chữ số cho độ chính xác:
10.845222072678331.
Kết quả trả về bởi chương trình của tôi là không tốt trong tính toán tiếp theo của tôi. Hơn nữa, tôi không chắc chắn cách chương trình trả về 10.8557 bắt đầu từ 10.845222072678331 (giả sử rằng đây là kết quả gần đúng cho việc phân chia)? Làm cách nào để có kết quả tốt cho sự phân chia của tôi?
cảm ơn bạn trước, madalina
tôi in kết quả bằng cách sử dụng dòng lệnh:
std::cout<<slope<<endl;
Nó có thể là thông số của tôi là có lẽ không tốt, như tôi đọc chúng từ một chương trình khác (mà tính toán đồ thị, sau khi tôi đọc các thông số này từ đồ thị của mình, tôi chỉ hiển thị chúng để xem giá trị của chúng, nhưng có lẽ các vectơ được hiển thị không có độ chính xác nội tại tương đương với giá trị được tính .. Tôi không biết nó thực sự lạ Một số al lỗi xuất hiện ..)
Khi biểu đồ mà từ đó tôi đọc thông số của tôi được tính toán, một số thư viện số được viết bằng C++ (có mẫu) được sử dụng. Không có OpenGL được sử dụng cho tính toán này.
cảm ơn bạn, madalina
Kiểm tra cách phương thức được biên dịch trong asm. Bạn có thể làm điều đó trong trình gỡ rối tôi tin (ít nhất là trong studio trực quan). –
Cửa sổ của tôi calc cho kết quả tốt như Mathematica: D – klew
Trình biên dịch nào, nền tảng nào? – peterchen