30/09/2018, 18:35

Cần giúp đỡ bài tính giá trị sin(x) với độ chính xác và công thức cho trước

Tình hình là em không biết code khúc (2n+1)!

Thành Phạm viết 20:39 ngày 30/09/2018
  • Nêu rõ vấn đề và cung cấp đầy đủ thông tin khi hỏi bài tập: mục đích của code (hoặc đề bài), input, output, toàn bộ code đã viết (hoặc một phần code nghi ngờ lỗi), báo lỗi của trình biên dịch, ảnh chụp màn hình.
  • Trau chuốt nội dung sẽ giúp người đọc thích hơn và đấy là một trong những kỹ năng cần thiết để trở thành một lập trình viên chuyên nghiệp

Đạt thấy có nhiều topic mất rất nhiều thời gian để thu hút sự chú ý của các thành viên khác và nhận được câu trả lời. Bài viết này chia sẻ một số mẹo để có thể thu hút được sự chú ý của người đọc và mau chóng nhận được câu trả lời Tiêu đề cần phải rõ ràng Đây là vấn đề chung mà nhiều thành viên mới vấp phải, với một tiêu đề rõ ràng dễ hiểu thì người có chuyên môn sẽ nhanh chóng hiểu được rằng họ có khả năng trả lời câu hỏi. Điều này khiến họ mau chóng vào đọc và trả lời. Đọc thêm: Làm sao đ…
Nguyen Ca viết 20:44 ngày 30/09/2018

Cho người ta thấy bạn đã tốn sức với bài toán như thế nào, người ta mới có thể giúp bạn.

X Quochunghero viết 20:45 ngày 30/09/2018

em bí hơn 1 ngày rồi @@

Thành Phạm viết 20:47 ngày 30/09/2018

1 ngày chắc cũng phải làm được 1 vài thứ chứ viết được bao nhiêu bạn cứ đưa hết lên đây

Tình hình là em không biết code khúc (2n+1)!

À tức là bạn đang không làm được hàm tính giai thừa hay như nào

X Quochunghero viết 20:42 ngày 30/09/2018

uhm, em không làm được code (2n+1)!

Thành Phạm viết 20:36 ngày 30/09/2018

Google có nhiều lắm, bạn chỉ cần tìm “tính giai thừa trong” + ngôn ngữ bạn đang học là được

VD: https://www.google.com/search?q=tính+giai+thừa+trong+c

X Quochunghero viết 20:42 ngày 30/09/2018

Mà sao n! em làm được, tới lúc gặp (2n+1)! làm ko được bực quá xóa luôn

Thành Phạm viết 20:42 ngày 30/09/2018

Thế thôi cho b code luôn nhá, ngâm cứu xem, mình viết = python

def tinh_giai_thua(N):
    giai_thua = 1
    for i  in range(1, N + 1):
       giai_thua = giai_thua * i 
    return giai_thua


def tinh_sinx(x):
    sinx = 0;
    do_chinh_xac_can_co = 0.00001
    do_chinh_xac_hien_thoi = do_chinh_xac_can_co + 1 # cong 1 de no lon hon do_chinh_xac_can_co

    i = 0
    while(do_chinh_xac_hien_thoi > do_chinh_xac_can_co):
        phan_bien_thien = pow((-1), i)  * ( float( pow(x, (2 * i + 1) ) )  / (tinh_giai_thua(2 * i + 1)) )
        sinx = sinx + phan_bien_thien
        do_chinh_xac_hien_thoi = abs(phan_bien_thien)
        i += 1

    return sinx

print tinh_sinx(3)

Mà thực ra code này mình vẫn thấy có vẻ không ổn lắm đặc biệt là chỗ độ chính xác, vì độ chính xác phải là hiệu của cái không chuẩn với cái chuẩn, ở đây mình chỉ lấy cái mới trừ cái cũ thôi, k biết có cách nào đúng hơn không

X Quochunghero viết 20:49 ngày 30/09/2018
#include <stdio.h>
#include <conio.h>
#include<math.h>
 int tinhgiaithua(int n)
{
    int giai_thua = 1;
    for (int i = 1; i <= n + 1; i++)
   {
      giai_thua = giai_thua*i;
   }
  return giai_thua;
} 
void main()
{
  int n, x;
  double  s = 0;
  printf("Nhap n "); scanf_s("%d", &n);
  printf("Nhap x "); scanf_s("%d", &x);
  for (int i = 0; i <= n; i++)
  {
	s = s + pow(-1, i)*pow(x, 2 * i + 1) / (tinhgiaithua(2 * i + 1));
  }
  printf("Sin(%d)= %f", x, s);
  _getch();
}

em sai chỗ nào vậy? tính kq sai

... viết 20:49 ngày 30/09/2018

for (int i = 1; i <= n + 1; i++)

for(int i = 1; i <= n; i++)

Cho nó chạy từ 1 tới n để tính giai thừa chứ ko phải chạy tới n+1

X Quochunghero viết 20:36 ngày 30/09/2018

Ok, thanks, đúng rồi, lỗi cơ bản thế nhìn không ra @@

Chi Ngo viết 20:37 ngày 30/09/2018

Xem thử hướng dẫn này: http://chingovan.blogspot.com/2015/06/python-tim-gia-tri-cua-bieu-thuc-taylor.html

Bài liên quan
0