scipy作业

这篇博客介绍了如何利用scipy库解决三个问题:1) 利用lstsq函数通过最小二乘法求解线性方程组;2) 使用optimize库的brute函数寻找函数的最大值;3) 借助spatial.distance的cdist函数计算两点间的距离。示例代码展示了具体操作和运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:

随机构造矩阵A和向量b,这里我用np.random.randn()构建了两个服从正态分布的数组。

然后用scipy.linalg库中的lstsq函数使用最小二乘法求解出向量x

最后用norm函数求出结果

代码:

import numpy as np   
from scipy.linalg import norm  
from scipy.linalg import lstsq
  
m = 10  
n = 5
sigmaA = 2.0
sigmab = 1.5
muA = 2
mub = 3
  
A=sigmaA*np.random.randn(m,n)+muA  
b=sigmab*np.random.randn(m)+mub

print("A:")
print(A)
print("b:")
print(b)  
  
x, res, rnk, s = lstsq(A, b)
print("x:")
print(x)  
result = norm(b-np.dot(A,x),ord=2)
print("result:")  
print(result) 

运行结果:




思路:

要求函数的最大值,可以先将函数乘-1,然后求最小值,用scipy.optimize库里的brute函数即可。

分析函数的性质可知函数在x=0处取极大值。

代码:

import numpy as np  
import scipy.optimize as op
  
def my_function(x):  
    return(-(np.sin(x-2)**2)*np.exp(-(x**2)))  

mini = op.brute(my_function,((-20,20,0.05),))  

print("the maxinum of function:")
print(-my_function(mini[0]))  

运行结果:




思路:求两点之间的距离,用sicpy.spatial.distance库里的cdist函数即可

代码:

import numpy as np
import scipy.spatial.distance as dist

m = 4
n = 5

x = np.random.randn(m,n)
print("x:")
print(x)
distance = dist.cdist(x,x)
print("distance:")
print(distance)

运行结果:


### SciPy 和 Singularity 使用指南 #### 关于 SciPy 的介绍 SciPy 是一个用于科学和技术计算的 Python 库,它建立在 NumPy 基础之上并提供了大量的功能来处理常见的科学运算任务。这些功能涵盖了积分、微分方程求解、优化算法以及统计测试等多个方面[^1]。 ```python from scipy import integrate def integrand(x, a, b): return a * x + b result, error = integrate.quad(integrand, 0, 1, args=(2, 1)) print(f"The integral result is {result} with an estimated error of {error}") ``` #### 关于 Singularity 容器化平台概述 Singularity 提供了一种创建和运行容器的方法,在科研环境中特别受欢迎因为其能够很好地支持 HPC(高性能计算)集群环境中的作业执行。相比于 Docker 等其他容器解决方案而言,Singularity 更加注重安全性与隔离性,并且可以直接在大多数 Linux 发行版上安装使用而无需额外配置内核模块或更改系统设置[^2]。 #### 结合 SciPy 和 Singularity 实现自包含数据分析流程 为了确保不同机器之间的兼容性和一致性,可以利用 Singularity 来打包整个项目依赖关系包括特定版本号下的 Python 解释器及其扩展库如 SciPy。下面是一个简单的例子展示如何构建这样一个容器镜像文件 `Singularity.def`: ```singularity Bootstrap: docker From: continuumio/miniconda3 %post conda create -n myenv python=3.8 source activate myenv pip install numpy scipy matplotlib pandas seaborn jupyterlab %environment export PATH=/opt/conda/envs/myenv/bin:$PATH %runscript exec jupyter lab "$@" ``` 通过上述定义之后就可以按照官方文档说明来进行编译操作从而获得可用于任何支持 singularity 的系统的便携式应用包了[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值