当前位置: 首页 > news >正文

Python中joblib库并行求解多个方程组

并行求解程序一

# -*- coding: utf-8 -*-import  numpy as np
from numba import jit
from joblib import Parallel,delayed
from timeit import default_timer as timer
import timedef solve_system_memory_friendly(c_k, F_k, M, A):"""内存友好的求解函数"""# 直接使用M和A,避免创建临时的大矩阵# 对于特殊结构的矩阵,可以实现更高效的求解# 这里使用直接求解,对于大矩阵应该使用迭代法coefficient_matrix = c_k * M + AU_k = np.linalg.solve(coefficient_matrix, F_k)return U_kdef parallel_solve_memory_friendly(c_list, F_list, M, A, n_jobs=11):"""内存友好的并行求解"""# 使用列表推导式准备参数solutions = Parallel(n_jobs=n_jobs, verbose=0)(delayed(solve_system_memory_friendly)(c_k, F_k, M, A) for c_k, F_k in zip(c_list, F_list))total_sum = np.sum(solutions, axis=0)return total_sum, solutions
def verify_solution(c_list, F_list, M, A, solutions, total_sum):"""验证求解的正确性"""print("验证求解结果:")for i, (c_k, F_k, U_k) in enumerate(zip(c_list, F_list, solutions)):residual = np.linalg.norm((c_k * M + A) @ U_k - F_k)print(f"方程组 {i+1} 残差: {residual:.2e}")print(f"累加和范数: {np.linalg.norm(total_sum):.2e}")# 在主要代码中使用验证
if __name__ == "__main__":# 设置随机种子以便复现np.random.seed(42)n = 100  # 小一点的维度用于测试M = np.random.rand(n, n) + 10 * np.eye(n)A = np.random.rand(n, n) + 10 * np.eye(n)m=1c_list = range(m)#[1.0, 2.0, 3.0, 4.0, 5.0]F_list = [np.random.rand(n) for _ in range(m)]# 求解start = time.time()total_sum, solutions = parallel_solve_memory_friendly(c_list, F_list, M, A)print(f'Time consuming:{time.time() - start}')print(total_sum)print(solutions)# 验证#verify_solution(c_list, F_list, M, A, solutions, total_sum)

并行求解程序二

# -*- coding: utf-8 -*-import  numpy as np
from numba import jit
from joblib import Parallel,delayed
from timeit import default_timer as timer
import timedef solve_system_memory_friendly(c_k, F, M, A):"""内存友好的求解函数"""# 直接使用M和A,避免创建临时的大矩阵# 对于特殊结构的矩阵,可以实现更高效的求解# 这里使用直接求解,对于大矩阵应该使用迭代法coefficient_matrix = c_k * M + AU_k = np.linalg.solve(coefficient_matrix, F)return U_kdef parallel_solve_memory_friendly(c_list, F, M, A, n_jobs=11):"""内存友好的并行求解"""# 使用列表推导式准备参数solutions = Parallel(n_jobs=n_jobs, verbose=0)(delayed(solve_system_memory_friendly)(c_k, F, M, A) for c_k in zip(c_list))total_sum = np.sum(solutions, axis=0)return total_sum, solutions
# 在主要代码中使用验证
if __name__ == "__main__":# 设置随机种子以便复现np.random.seed(42)n = 100  # 小一点的维度用于测试M = np.random.rand(n, n) + 10 * np.eye(n)A = np.random.rand(n, n) + 10 * np.eye(n)m=10c_list = range(m)#[1.0, 2.0, 3.0, 4.0, 5.0]F = np.random.rand(n)# 求解start = time.time()total_sum, solutions = parallel_solve_memory_friendly(c_list, F, M, A)print(f'Time consuming:{time.time() - start}')print(total_sum)print(solutions)# 验证#verify_solution(c_list, F_list, M, A, solutions, total_sum)
http://www.dtcms.com/a/471264.html

相关文章:

  • 购买空间后怎么上传网站越南外贸平台
  • c 网站建设教程视频建筑模拟器2022下载
  • C语言--核心语法
  • 网站建设兼职合同模板门户网站是什么
  • 基于SpringBoot的高校(学生综合)服务平台的设计与实现
  • 模板自助建站网站备案信息不准确
  • SAP MM 通用物料移动过账接口分享
  • 【ThinkPHP6系列学习-5】获取变量
  • AI技术路线之争
  • Android编译插桩ASM技术探究(一)
  • 西安网站建设软件模板下载失败
  • 学校的网站开发过程钓鱼软件生成器
  • 宁波企业建站网站建设科技
  • 网站开发学习什么网站建设实施规范
  • 安徽建设厅网站进不去郑州网站优化公司平台
  • 如何在网站投放广告wordpress标题后乱码
  • 【C++学习】继承和多态
  • 开发一个网站需要多少人杭州品牌vi设计公司
  • 韩雪冬做网站多少钱网址搜索ip地址
  • Google 智能体设计模式:探索与发现
  • 湛江购房网官方网站沈阳点金网站建设
  • 靖江网站设计做网站服务好
  • 制作网站的素材wordpress怎么改表缀
  • 合肥网站制作公司有哪些公司网站维护中 源码
  • C++的string类
  • 【软件设计师中级】计算机组成与结构(五):指令系统与计算机体系结构 - CPU的“思维语言“与架构蓝图
  • 柳州网站建设数公式大全wordpress 输出the id
  • 17网站一起做网店杭州wordpress 当前页面
  • 百度推广客户端兰州网站seo收费
  • 建站系统主要包括什么自适应网站导航怎么做