擅长:python、mysql、java
<ol>
<li>使用<code>nsolve()</code>时,RHS都是零。将右侧的非零项(2,0,2/3,0)移动到左侧</李>
<li><code>nsolve()</code>的第三个参数是接近解的初始猜测<br/>
有根据的猜测是<code>(x1,x2,w1,w2) = (-1,1,1,1)</code>区间<code>[-1,1]</code>中的<code>(x1,x2,w1,w2) = (-1,1,1,1)</code>权重相等<br/>
我试过其他一些猜测。其中一些造成了同样的错误</李>
</ol>
<p>输出:</p>
<pre><code>w1 + w2 - 2
w1*x1 + w2*x2
w1*x1**2 + w2*x2**2 - 0.666666666666667
w1*x1**3 + w2*x2**3
Matrix([[-0.577350269189626], [0.577350269189626], [1.00000000000000], [1.00000000000000]])
</code></pre>
<p>结果与维基百科中关于<a href="https://en.wikipedia.org/wiki/Gaussian_quadrature#Gauss%E2%80%93Legendre_quadrature" rel="nofollow noreferrer">table</a>的<code>n=2</code>案例一致</p>
<p>代码:</p>
<pre class="lang-py prettyprint-override"><code>from sympy import Symbol, solve, nsolve
x1 = Symbol('x1')
x2 = Symbol('x2')
w1 = Symbol('w1')
w2 = Symbol('w2')
eq1 = w1 + w2 - 2
eq2 = (w1 * x1) + (w2 * x2) - 0
eq3 = (w1 * x1**2) + (w2 * x2**2) - 2 / 3
eq4 = (w1 * x1**3) + (w2 * x2**3) - 0
print(eq1, eq2, eq3, eq4, sep='\n')
print(nsolve((eq1, eq2, eq3, eq4), (x1, x2, w1, w2), (-1, 1, 0.5, 0.5)))
</code></pre>