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

answer

Vũ Thái Thanh · Vũ Thái Thanh 02:50 07/03/2012

sqrt=x**[1/2]đang thực hiện phép chia số nguyên. 1/2 == 0.

Vì vậy, bạn đang tính toán x [1/2] trong trường hợp đầu tiên, x [0] trong trường hợp thứ hai.

Vì vậy, nó không sai, nó là câu trả lời đúng cho một câu hỏi khác.

259 hữu ích 3 bình luận chia sẻ

answer

Tạ Tường Lâm · Tạ Tường Lâm 02:51 07/03/2012

Bạn phải viết sqrt = x**[1/2.0]:, nếu không một phép chia số nguyên được thực hiện và biểu thức 1/2trả về 0.

Hành vi này là "bình thường" trong Python 2.x, trong khi trong Python 3.x 1/2đánh giá là 0.5. Nếu bạn muốn mã Python 2.x của mình hoạt động giống như viết phân chia 3.x wrt from __future__ import division- thì 1/2sẽ đánh giá tới 0.5và về khả năng tương thích ngược, 1//2sẽ đánh giá tới 0.

Và đối với bản ghi, cách ưa thích để tính căn bậc hai là:

import math math.sqrt[x]

122 hữu ích 0 bình luận chia sẻ

answer

Hoàng Bình Minh · Hoàng Bình Minh 00:11 03/04/2018

import math math.sqrt[ x ]

Nó là một bổ sung nhỏ cho chuỗi câu trả lời. Tuy nhiên, vì Chủ đề là lượt truy cập rất phổ biến của google, tôi tin rằng điều này xứng đáng được thêm vào.

28 hữu ích 0 bình luận chia sẻ

answer

Tạ Hoài Phương · Tạ Hoài Phương 02:51 07/03/2012

/ thực hiện phép chia số nguyên trong Python 2:

>>> 1/2 0

Nếu một trong các số là số thực, nó hoạt động như mong đợi:

>>> 1.0/2 0.5 >>> 16**[1.0/2] 4.0

11 hữu ích 0 bình luận chia sẻ

answer

Đỗ Thanh Yên · Đỗ Thanh Yên 02:52 07/03/2012

Những gì bạn đang thấy là phép chia số nguyên. Để nhận phân chia dấu phẩy động theo mặc định,

from __future__ import division

Hoặc, bạn có thể chuyển đổi 1 hoặc 2 của 1/2 thành giá trị dấu phẩy động.

sqrt = x**[1.0/2]

7 hữu ích 0 bình luận chia sẻ

answer

Lý Quốc Quân · Lý Quốc Quân 08:33 25/01/2018

Điều này có thể hơi muộn để trả lời nhưng cách đơn giản và chính xác nhất để tính căn bậc hai là phương pháp của newton.

Bạn có một số mà bạn muốn tính căn bậc hai của nó [num]và bạn có thể đoán căn bậc hai của nó [estimate]. Ước tính có thể là bất kỳ số nào lớn hơn 0, nhưng một số có ý nghĩa sẽ rút ngắn đáng kể độ sâu cuộc gọi đệ quy.

new_estimate = [estimate + num / estimate] / 2

Dòng này tính toán ước tính chính xác hơn với 2 tham số đó. Bạn có thể chuyển giá trị new_estimate cho hàm và tính toán một new_estimate khác chính xác hơn giá trị trước đó hoặc bạn có thể tạo một định nghĩa hàm đệ quy như thế này.

def newtons_method[num, estimate]: # Computing a new_estimate new_estimate = [estimate + num / estimate] / 2 print[new_estimate] # Base Case: Comparing our estimate with built-in functions value if new_estimate == math.sqrt[num]: return True else: return newtons_method[num, new_estimate]

Ví dụ, chúng ta cần tìm căn bậc hai của 30. Chúng tôi biết rằng kết quả là từ 5 đến 6.

newtons_method[30,5]

số là 30 và ước tính là 5. Kết quả từ mỗi lần gọi đệ quy là:

5.5 5.477272727272727 5.4772255752546215 5.477225575051661

Kết quả cuối cùng là phép tính chính xác nhất về căn bậc hai của số. Nó có cùng giá trị với hàm tích hợp math.sqrt [].

5 hữu ích 0 bình luận chia sẻ

answer

Hồ Triệu Mẫn · Hồ Triệu Mẫn 02:23 06/04/2018

Có lẽ một cách đơn giản để nhớ: thêm dấu chấm sau tử số [hoặc mẫu số]

16 ** [1. / 2] # 4 289 ** [1. / 2] # 17 27 ** [1. / 3] # 3

1 hữu ích 0 bình luận chia sẻ

answer

Bùi Thế Vinh · Bùi Thế Vinh 06:08 16/08/2020

Nếu bạn muốn làm điều đó theo cách thực tế của máy tính, hãy sử dụng kỹ thuật Babylon. Nó được giải thích ở đây và ở đây .

Giả sử bạn muốn tính căn bậc hai của 2:

a=2 a1 = [a/2]+1 b1 = a/a1 aminus1 = a1 bminus1 = b1 while [aminus1-bminus1 > 0]: an = 0.5 * [aminus1 + bminus1] bn = a / an aminus1 = an bminus1 = bn print[an,bn,an-bn]

1 hữu ích 0 bình luận chia sẻ

answer

Trần Hà Khuê · Trần Hà Khuê 17:42 10/02/2017

Bạn có thể sử dụng NumPy để tính căn bậc hai của mảng:

import numpy as np np.sqrt[[1, 4, 9]]

0 hữu ích 1 bình luận chia sẻ

answer

Lê Bình An · Lê Bình An 01:55 25/07/2017

Tôi hy vọng đoạn mã được đề cập dưới đây sẽ trả lời câu hỏi của bạn.

def root[x,a]: y = 1 / a y = float[y] print y z = x ** y print z base = input["Please input the base value:"] power = float[input["Please input the root value:"]] root[base,power]

-1 hữu ích 1 bình luận chia sẻ

Video liên quan

Chủ Đề