求f x x 2+x cos x在0π上的二次最佳平方逼近多項式

為了找到在區間[0, π]上逼近函式f(x) = x^2 + x cos x的二次多項式逼近,我們可以使用多項式插值的方法。這裡我們假設你要找出一個多項式P(x),使得它在[0, π]上與f(x)儘可能接近。

首先,我們需要知道f(x)在[0, π]上的值。對於這個特定的函式,我們可以在0和π處直接取值。f(0) = 0,f(π) = π^2 + π cos π = π^2 - π。

接下來,我們需要構造一個多項式P(x),使得它在[0, π]上的值儘可能接近f(x)。由於我們希望這個多項式是二次的,所以它應該是以下形式的三次多項式:

P(x) = ax^3 + bx^2 + c*x + d

對於這個多項式,我們需要找出四個參數a, b, c, d,使得在區間[0, π]上f(x)和P(x)之間的差的平方和最小。為了找到這些參數,我們可以使用最小二乘法。

首先,我們需要計算f(x)和P(x)之間的差的平方。對於每個x,我們都有:

f(x) - P(x) = (x^2 + x cos x) - (ax^3 + bx^2 + c*x + d)

為了使這個差的平方最小,我們可以將這個差的平方對a, b, c, d求偏導數並令它們等於零。這樣我們就可以得到四個方程和一個常數項。解這個方程組可以得到a, b, c, d的值。

為了簡化計算,我們可以使用Python的NumPy庫來求解這個方程組。以下是代碼示例:

import numpy as np
import scipy.optimize as sco

def f(x): return x**2 + np.cos(x)*x

def p(a, b, c, d): return a*x**3 + b*x**2 + c*x + d

# 定義一個函式來計算f(x)和p(a, b, c, d)之間的差的平方
def error_function(a, b, c, d): return scipy.optimize.sqerr(f, p)(a, b, c, d)

# 使用最小二乘法求解參數
coefficients = sco.leastsq(error_function, [1e-6]*4)
a, b, c, d = coefficients[:4]

# 輸出結果
print("最佳逼近多項式的係數:", a=a, b=b, c=c, d=d)

運行這段代碼後,你應該會得到最佳逼近多項式的係數。這個多項式可以用來近似函式f(x)在[0, π]上的值。你可以使用這個多項式來預測任何在[0, π]範圍內的x的值,並檢查預測值與真實值的接近程度。