.csv文件,包含多项式方程的解

2024-09-25 12:22:33 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个四次方程的形式:

a0x^4+a1x^3+a2x^2+a3x+a4=0

我知道我可以使用numpy根方法来求解四次方程,但我希望系数根据规则变化,比如说它们依赖于参数x,它取值1,2,…,10

例如,我们有系数

a0=1, a1=3q^2, a2=4q, a3=sqrt(q), a4=q

在8列中,求出q值的四个实部和四个虚部的解,随着q的变化,从1到10

例如,对于x=1

import numpy as np
q=1
a0=1
a1=3*q^2
a2=4*q 
a3=np.sqrt(q) 
a4=q
coeff=[a0, a1, a2, a3, a4]
np.roots(coeff)

产出将是:

array([-0.39002422+1.84237253j, -0.39002422-1.84237253j,
       -0.10997578+0.51949688j, -0.10997578-0.51949688j])

是否有可能将所有q范围的解转换成.csv格式,分9列,第一列表示q值,第二列表示实部和虚部


Tags: numpya2a1npsqrta0a3形式
1条回答
网友
1楼 · 发布于 2024-09-25 12:22:33

基本上,我们的想法是创建一个新数组并将其导出。我可以想出几种方法来实现这一点,下面是我实现的一种方法。 选择此方法是因为它不需要额外的导入,而且它使用an answer that was linked in a comment to the question

import numpy as np
export = np.empty([10,9])
for q in range(1,11):
    a0=1
    a1=3*q^2
    a2=4*q 
    a3=np.sqrt(q) 
    a4=q
    coeff=[a0, a1, a2, a3, a4]
    answer = np.roots(coeff)
    export[q-1, 0] = q
    for _ in range(len(answer)):
        export[q-1, 2*_+1] = answer[_].real
        export[q-1, 2*(_+1)] = answer[_].imag
with open("/tmp/latest_foo.csv", "ab") as output_file:
    np.savetxt(output_file, export, delimiter=",")

其他方法是创建一个常规的array而不是一个np.ndarray并导入csv写入文件,或者使用“+”和“-”作为分隔符并将其写入新数组或直接写入csv。 如果您需要不同的输出格式,我建议查看numpy.ndarray.tofile中提供的格式选项

相关问题 更多 >