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

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

尋找近似系數

尋找近似系數

至尊寶的傳說 2023-06-13 14:42:46
出于對數學的好奇心,我只想近似于任何數字,純粹是根據 e。示例:如果我給出 n=7.3890,程序必須返回 a=1,b=0,這是所有整數對 (a,b) 的最佳近似值(最小誤差)from math import *n=float(input("Enter a number to be approximated:"))for a in range(10):    for b in range(10):            if ((e**2)*a)+(e*b)==n:                print(a,b)該程序無法這樣做,因為它搜索的是精確值而不是近似值
查看完整描述

1 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

前提:以下解決方案找到整數(近似)系數。

使代碼更高效的一種簡單方法是使用向量化(使用numpy庫)計算所有索引組合的多項式,然后返回多項式值更接近 的值的索引組合n。

下面的代碼創建一個包含所有整數ab組合的網格,使用np.meshgrid,然后計算所有組合的多項式,并計算組合的位置,使多項式更接近于n使用np.argmin。最后,它返回組合的a和值。b

import numpy as np


def find_approximate_integer_coefficients(n, x, amin=-10, amax=10, bmin=-10, bmax=10):

? ? a_range = np.arange(amin, amax+1)

? ? b_range = np.arange(bmin, bmax+1)


? ? a_coefficients, b_coefficients = np.meshgrid(a_range, b_range)

? ? polynomial_value = (a_coefficients * (x ** 2) + b_coefficients * x)


? ? argmin = np.abs(polynomial_value - n).argmin()

? ? return a_coefficients.flatten()[argmin], b_coefficients.flatten()[argmin]

例如,在我的筆記本電腦上大約 75 微秒后find_approximate_integer_coefficients(7.3890, np.e)返回。(1, 0)


您可以輕松地將上面的代碼擴展到高階多項式的情況,因為該np.meshgrid方法接受任意數量的范圍來創建網格。


查看完整回答
反對 回復 2023-06-13
  • 1 回答
  • 0 關注
  • 119 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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