首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要帮助解决我的函数问题,我所有的答案都是零

我需要帮助解决我的函数问题,我所有的答案都是零
EN

Stack Overflow用户
提问于 2022-05-17 10:28:14
回答 1查看 116关注 0票数 -3

这就是我想要解决的问题:

编写一个函数my_is_orthogonal( v1,v2,tol),其中v1和v2是相同大小的列向量,tol是一个严格大于0的标量值。如果v1和v2之间的角度在π/2的tol内,则输出应该是1;也就是说,在π/2的tol范围内,π/2−θ

这是我的密码:

代码语言:javascript
复制
def my_is_orthogonal(v1,v2,tol):

    v1 = np.array((1,2,3))
    v2 = np.array((2,3,4))
    tol = print("Input a number larger than 0!")>0
    
    unit_vector1 = v1 / np.linalg.norm(v1)
    unit_vector2 = v2 / np.linalg.norm(v2)
    dot_product = np.dot(unit_vector1, unit_vector2)
    angle = np.arccos(dot_product)

    
    if abs((pi/2)-angle)<tol:
        print("1")
    else:
        print("0")
    return my_is_orthogonal

以下是我应该测试我的代码的情况:

代码语言:javascript
复制
Test cases for problem 2
a = np.array([[1], [0.001]])
b = np.array([[0.001], [1]])
output should be: 1
my_is_orthogonal(a,b, 0.01)
output should be: 0
my_is_orthogonal(a,b, 0.001)
output should be: 0
a = np.array([[1], [0.001]])
b = np.array([[1], [1]])
my_is_orthogonal(a,b, 0.01)
output should be: 1
a = np.array([[1], [1]])
b = np.array([[-1], [1]])
my_is_orthogonal(a,b, 1e-10)*

但在我所有的案例中,我得到的答案是零"0“

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-17 10:35:32

下面是您的代码的固定版本。

有相当一些荒谬的说法:

  • ,您在函数的开头用常量覆盖了v1v2。其次,您用tol覆盖了print(...) > 0,即false (副作用是总是打印错误消息)。换句话说,您的函数总是常量的。
  • 您不应该有一个函数打印1或0,而是返回一个值。(您以前返回了函数本身,这听起来像MATLABism,但在Python中没有意义)。
  • 您没有显示pi的导入(它不是内置的Python),所以我用

测试向量替换为不正确的形状。

代码语言:javascript
复制
import numpy as np

def my_is_orthogonal(v1, v2, tol):
    assert tol > 0, "Tol must be > 0"

    unit_vector1 = v1 / np.linalg.norm(v1)
    unit_vector2 = v2 / np.linalg.norm(v2)
    dot_product = np.dot(unit_vector1, unit_vector2)
    angle = np.arccos(dot_product)

    return abs((np.pi / 2) - angle) < tol


a = np.array([1, 0.001])
b = np.array([0.001, 1])
c = np.array([1, 1])
d = np.array([1, -1])
assert my_is_orthogonal(a,b, 0.01)
assert not my_is_orthogonal(a, b, 0.001)
assert not my_is_orthogonal(a, c, 0.01)
assert my_is_orthogonal(c, d, 1e-10)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72272380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档