Cách tính căn bậc 3, tìm căn bậc n của một số bất kỳ trong C/C++

Bài này mình sẽ hướng dẫn những bạn mới học lập trình cách để tính căn bậc n với n là một số ít bất kể nhé, nhưng n > = 2 nha. Chỉ là chỉ lại giúp những bạn nhớ lại toán học thôi ^ ^ .
Một số vướng mắc của những bạn sinh viên :

  • Tình hình là em đang bí trong cách tính căn bậc n của 1 số. Thực tình em mới học môn này được 2 tuần nên thực tình ko biết giải quyết thế nào, ai biết phép toán của nó ra sao thì giúp em với?
  • Trong C chỉ có hàm sqrt để tính căn bậc 2, vậy nếu em muốn tính căn bậc 3 hay căn bậc n của một số thì làm thế nào ạ?

Tính căn bậc 3 trong C/C++

Để tính căn bậc 3 trong C / C + +, bạn sử dụng công thức toán học sau. Công thức này đúng với căn bậc n luôn nhé. Bạn hoàn toàn có thể vận dụng để tính căn bậc n của số bất kể :

Cách tính căn bậc 3

Như vậy, với 1 số ít x = 8 ví dụ điển hình, bạn muốn tính căn bậc 3 của 8. Khi đó, trong công thức trên x = 8, n = 3, m = 1. Vậy ta sẽ phải tính x1 / 3
Để tính ax trong C / C + +, tất cả chúng ta hoàn toàn có thể sử dụng hàm pow ( ) có cú pháp như sau :

012

doublepow(doublebase,doubleexponent);

Ví dụ dưới đây sử dụng C / C + + để tính căn bậc 3 của 8 theo cách trên. Các bạn quan tâm em kiểu cho số mũ nhé. Vì 2 số nguyên chia cho nhau sẽ chỉ ra giá trị nguyên ( 1/3 = 0 ) .

0123456789

#include

#include

intmain()

{

inta=8;

printf(” % f “,pow(a,1.0/3));

}

Kết quả : 2.000000
Như vậy, để tính căn bậc n của số a, bạn sẽ dùng hàm pow để tính tác dụng của phép tính a1 / n

Tính căn bậc 3 không dùng hàm pow

Để tính căn bậc 3 của 1 số dương a ( tổnq quát căn bậc n ), ta phải kiến thiết xây dựng một chuỗi ( toán học ) mà chuỗi này quy tụ về căn bậc 3 của a. Sau đó lặp hữu hạn 1 số lần để được hiệu quả với độ đúng mực nào đó gật đầu được. Sau day la chuong trinh trong C de thuật tính căn bậc 3 cua 2 voi độ đúng mực 0.00000001 chỉ bằng những phép toán +, –, *, / mà thôi .
Dưới đây là giải thuật tính căn bậc 3 của 2 của một thành viên trong Cộng đồng C Việt :

012345678910111213141516171819202122

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

/ / Cube root of 2 by Nguyen Van Noi – DHTG

/ / E-Mail : [ email protected ]

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

#include

doublemyabs(doublex)

{

return((x>=0)?x:(-x));

}

voidmain()

{

doublea=2.0,xo,xn=1,e=1 e-8;

do

{

xo=xn;

xn=(a/xo/xo+2.0*xo)/3.0;

}

while(myabs(xn-xo)>e);

printf(” Can bac 3 cua 2 = % 1.8 f \ n “,xn);

}

Một lời giải khác do mình tổng hợp :
Ý tưởng : Tìm phần nguyên trước, sau đó tìm phần thập phân .

Với cách làm này, bạn chỉ thu được kết quả xấp xỉ với đáp án chính xác. Độ chính xác phụ thuộc vào giá trị precision mà bạn mong muốn.

01234567891011121314151617181920

#include

doublecubeRoot(doublen){

doublei,precision=0.000001;

for(i=1;(i *i *i)<=n;++i);/ / tim phan nguyen

for(–i;(i *i *i)

returni;

}

intmain(){

intn=125;

printf(” Can bac ba cua % d = % lf “,n,cubeRoot(n));

return0;

}

Chạy thử :

012

Canbac3cua125=

5.000000