问题描述:

三个未知量构成一个方程式,该CSV文件中一共有N行数据有关[x, y, z]的系数,求解三个未知量[x, y, z]的值。

文章目录

  • 前言
  • 一、工具包
  • 二、使用步骤
    • 1.读入文件
    • 2.编写方程
  • 总结

前言

三个未知量[x, y, z]之间的关系是:a*x + b*y + c*z = p。

像这样的式子,csv文件中一共有N行,我的需求是根据这些不同的系数和不同的结果p值,求出三个未知量的值。

一、工具包

首先要使用到的工具主要是numpy和pandas,pandas也是基于numpy的一种工具,里面的DataFrame很适合用于打开和修改CSV文件。

二、使用步骤

1.读入文件

代码如下:

import numpy as np
import pandas as pd
from sympy import *df = pd.read_csv(r'C:/Users/hanhan/PycharmProjects/pythonProject/data.csv',encoding = 'gbk')

2.编写方程

代码如下:

#参数定义
x = []
y = []
z = []for i in range(len(df)-3):a = np.array(df['系数1'].iloc[i:i+3])b = np.array(df['系数2'].iloc[i:i+3])c = np.array(df['系数3'].iloc[i:i+3])"""a1*x + b1*y + c1*z = p1a2*x + b2*y + c2*z = p2a3*x + b3*y + c3*z = p3"""#p = [p1, p2, p3]p = [1, 2, 3]m = np.array([[a[0], b[0], c[0]], [a[1], b[1], c[1]], [a[2], b[2], c[2]]])n = np.array(p) #可替换为式子右边的常数print(m)print(n)solution = np.linalg.solve(m, n) #solution format: np.array([x, y, z])print('solution=', solution)x.append(solution[0])y.append(solution[1])z.append(solution[2])

①首先,定义参数(也就是需要求的三个未知量)

②每次三行三行的取系数数据及常数项数据,每个三行数据构成方程组。

a1*x + b1*y + c1*z = p1

a2*x + b2*y + c2*z = p2

a3*x + b3*y + c3*z = p3

③用np.linalg.solve()函数来求解方程组,该函数是以矩阵形式给出线性方程的解,将每一个方程式的系数一组一组的写入m中,常数项写入n中。

m = np.array([[a[0], b[0], c[0]], [a[1], b[1], c[1]], [a[2], b[2], c[2]]])

n = np.array(p) #可替换为式子右边的常数

④每个方程组会得到一个解集,解集分别对应三个未知量[x, y, z]的解。

⑤并依次存入到之前定义的参数空列表中,方便后面存入文件。

⑥按列存入文件,并导出为csv。

这里的每一列就是x的可行解,因为我的需求是比较大的项目,所以我是取的每一列的平均值作为我的最后解。可是如果只是一个方程组的话,输出的就是一组解集了。

ls = np.array([x,y,z])df = pd.DataFrame(ls.transpose())df.to_csv(r'C:/Users/hanhan/PycharmProjects/pythonProject/data_answer.csv', encoding='gbk')

总结

下面是完整版代码:

import numpy as np
import pandas as pd
import math
from sympy import *
#数据表格
df = pd.read_csv(r'C:/Users/hanhan/PycharmProjects/pythonProject/data.csv',encoding = 'gbk')#参数定义
x = []
y = []
z = []for i in range(len(df)-3):a = np.array(df['系数1'].iloc[i:i+3])b = np.array(df['系数2'].iloc[i:i+3])c = np.array(df['系数3'].iloc[i:i+3])"""a1*x + b1*y + c1*z = p1a2*x + b2*y + c2*z = p2a3*x + b3*y + c3*z = p3"""#p = [p1, p2, p3]p = [1, 2, 3]m = np.array([[a[0], b[0], c[0]], [a[1], b[1], c[1]], [a[2], b[2], c[2]]])n = np.array(p) #可替换为式子右边的常数print(m)print(n)solution = np.linalg.solve(m, n) #solution format: np.array([x, y, z])print('solution=', solution)x.append(solution[0])y.append(solution[1])z.append(solution[2])ls = np.array([x,y,z])df = pd.DataFrame(ls.transpose())df.to_csv(r'C:/Users/hanhan/PycharmProjects/pythonProject/data_answer.csv', encoding='gbk')

也可以提前画出求出解的图片看看效果:

import matplotlib.pyplot as plt# 画图
fig = plt.figure()
x1= [j for j in range(len(x))]
ax1 = fig.add_subplot(3,2,1)
ax1.scatter(x1, x)
ax1.set_title('x')ax2 = fig.add_subplot(3,2,2)
ax2.scatter(x1, y)
ax2.set_title('y')ax3 = fig.add_subplot(3,2,3)
ax3.scatter(x1, z)
ax3.set_title('z')plt.show()

Python求解多个多元一次方程组(完整可运行版本代码)相关推荐

  1. Excel解多元一次方程组(线代)

    目录: 方法一:矩阵解法 方法二:用克莱姆法则 方法三:用规划求解 ---------------------------------------------- Excel中解多元一次方程组的三种方法 ...

  2. 计算机怎么接多元一次方程,使用Excel解多元一次方程组的三种方法

    本文列出了使用Excel中解多元一次方程组的三种方法:矩阵解法.用克莱姆法则和用规划求解的方法. 方法一:矩阵解法 原理:对于由n个未知数,n个方程组成的多元一次方程组: 写成矩阵形式为Ax=b,其中 ...

  3. 怎样用c语言编程解多元方程组,C语言解多元一次方程组(矩阵法)

    C语言解多元一次方程组(矩阵法) 发布时间:2016年06月08日 评论数:抢沙发 阅读数:2560 #include #include #define Han 200//(可自设)多元一次方程组有n ...

  4. 多元一次方程组的求解

    求解多元一次方程组: f(1,1)x1+f(1,2)x2+f(1,3)x3+...=f(1,n) f(2,1)x1+f(2,2)x2+f(2,3)x3+...=f(2,n) f(3,1)x1+f(3, ...

  5. python 线性代数:解多元一次方程

    因为在程序化交易策略中使用了网格算法进行交易,因为在网格中想设置动态资源大小的问题,所以就想到使用抛物线的分布方法来对网格资金配置进行分配. 比如我的网格最大值设置为1540,最小值设置为1404,中 ...

  6. 组合数学之隔板法:多元一次方程组解的统计

    1. 内容 讨论多元一次不定方程: x 1 + x 2 + . . . + x d = t x_1 + x_2 + ... + x_d = t x1​+x2​+...+xd​=t有解的情况 隔板法求解 ...

  7. python画球轨迹图_python绘制铅球的运行轨迹代码分享

    我们按照面向过程程序设计的思想,使用python编写了程序,追踪铅球在运行过程中的位置信息.下面,修改程序代码,导入turtle模块,将铅球的运行轨迹绘制出来. python3代码如下: from m ...

  8. 科学计算机怎么求方程,卡西欧科学计算器fx-82ES PLUS A怎么求解行列式和解多元一次方程?...

    把方程化成下列形式: ax+by=c dx+ey=f 82es-plus 按Mode键,按2,按2. 在X1处输入b除以a的值,Y1处输入c除以a的值. 在X2处输入e除以d的值,Y2处输入f除以d的 ...

  9. 提供一个python和pyfmi编写的实时调用fmu模型运行的代码案例

    这是一个使用 pyfmi 模块实时调用 FMU 模型的示例代码: import pyfmi# Load the FMU fmu = pyfmi.load_fmu('MyModel.fmu')# Cre ...

最新文章

  1. php图片编辑失真,PHP上传真彩图片缩略图质量失真解决方法
  2. [LeetCode]Maximal Rectangle
  3. redis中的ziplist
  4. 单片机声光电子琴程序流程图_基于单片机的智能家居控制系统毕业设计
  5. 安卓 Handler使用方法
  6. 机器学习之数据预处理——数据清洗(缺失值、异常值和重复值的处理)
  7. HDU - 4578Transformation——线段树+区间加法修改+区间乘法修改+区间置数+区间和查询+区间平方和查询+区间立方和查询
  8. 聊聊毕业设计系列 --- 系统实现
  9. [CQOI2016]手机号码
  10. ASP.NET Core json返回忽略某些字段,实体不与数据库映射字段
  11. 对磁盘做完整镜像(按扇区对扇区备份)的目的
  12. Hcse 交换知识点-1
  13. 发卡行 收单行 收单
  14. 太极计算机logo,太极图:最古最美最富有涵义的标志
  15. python实现拖动画笔画图_Python下使用Trackbar实现绘图板
  16. 银行存储管理系统oracle,课内资源 - 基于JSP和Oracle实现的志愿服务银行系统
  17. 第4次作业类测试代码+105032014070+胡阳洋
  18. 不要与最好的朋友合伙开公司?对吗
  19. Android自定义控件之拓展TextView(ExpandTextView)
  20. elementui 按钮 表单_仿ElementUI实现一个Form表单的实现代码

热门文章

  1. mac出现文件夹问号_MacBook Air开机出现一个带问号的文件夹图案是怎么回事?电脑已经无法进入系统!...
  2. 易语言和python混合编程_关于易语言与Python的一点想法
  3. echarts 动态数据动画效果
  4. curl:Failed connect to github-production-release-asset-2e65be.s3...; Connection refused解决办法
  5. Maven projects need to be imported!
  6. 汽车行业的互联网生意经
  7. WebRtC视频jitterbuffer原理机制
  8. Latex如何插入图片
  9. python营业数据分析_基于pandas python的美团某商家的评论销售(数据分析)
  10. 学编程的人那么多,到底编程的出路在哪?