亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 SymPy 查找數字的簡單表示

使用 SymPy 查找數字的簡單表示

Cats萌萌 2022-01-18 16:42:28
我正在努力簡化以下術語 sympy(乳膠)$\sqrt 3 {8+3\sqrt{21}}+\sqrt 3 {8-3\sqrt{21}}$from sympy import (    init_printing,    sqrt,    cbrt,    nsimplify,    simplify,)init_printing(use_unicode=True)value_plus = cbrt(8 + 3 * sqrt(21))value_minus = cbrt(8 - 3 * sqrt(21))value_both = value_plus + value_minus在這里,我將表達式分別分為兩部分value_plus和value_minus。對于第一部分,我得到了想要的結果nsimplify(value_plus)這是 $1/2+\sqrt{21}/2$ 可以在wolfram alpha中看到。然而,對于第二部分的期望結果($1/2-\sqrt{21}/2$),也可以在wolfram aplha中看到,以替代形式nsimplify(value_minus)我最終得到了一個復雜的表示,這也是正確的,但不完全是我想要得到的。因此,我沒有得到預期的結果,即 1。value_both = value_plus + value_minus如屏幕截圖所示。所以我的問題是,如何強制數字的其他表示?如何將表示限制為僅實數?
查看完整描述

1 回答

?
Helenr

TA貢獻1780條經驗 獲得超4個贊

而不是cbrt你可以使用real_root:


value_plus = real_root(8 + 3 * sqrt(21), 3)

value_minus = real_root(8 - 3 * sqrt(21), 3)


value_both = value_plus + value_minus


print(nsimplify(value_plus))

print(nsimplify(value_minus))

print(nsimplify(value_both))

輸出將是:


1/2 + sqrt(21)/2

1/2 - sqrt(21)/2

1


查看完整回答
反對 回復 2022-01-18
  • 1 回答
  • 0 關注
  • 206 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號