Python之Scipy

【解题思路】

最小二乘法,使用numpy.linalg模块的lstsq函数。

【具体代码】

import numpy as np
m = 20
n = 10
A = np.random.rand(m,n)
b = np.random.rand(m,1)
x,_,_,_ = np.linalg.lstsq(A,b,rcond=None)
b_ = np.dot(A,x)
sum = 0
for i in range(n):
	sum+=(b[i]-b_[i])**2
print("A = ")
print(A)
print("b = ")
print(b)
print("x = ")
print(x)
print("b_ = ")  #b_=Ax
print("误差")
print(sum)

【解题思路】

在scipy.optimize模块中,有fmin函数可以计算一个函数最小值对应的自变量值(很奇怪没有对应的fmax),这道题要求f(x)最大值,我们可以转换为求-f(x)的最小值。这里fmin函数传递初始迭代值和要计算的函数f(x)

【具体代码】

import scipy as sp
import math
import scipy.optimize as opt

def f(p):
	x=p
	a = x-2
	b = (math.exp(-x*x))
	c = (math.sin(a*b))**2
	y = -c
	return y

init_point = 1

maxinum = opt.fmin(f,init_point)

print("自变量值")
print(maxinum)
print("函数值")
print(-f(maxinum))

【运行结果】

从运行结果可以发现函数最大值是1,这与预估的结果是相符的,在这里改变初始值init_point,相应的会有不同的自变量值,但最大函数值是相同的,都是1.

【解题思路】

这里需要求解的距离应该是欧式距离,即两向量差的2-范数。使用scipy.spatial.distance模块的euclidean函数。

【具体代码】

from scipy.spatial.distance import euclidean as euc
import numpy as np
import scipy as sp

n=10
A = np.random.rand(n,2)

dis = []
for i in range(n):
	for j in range(i,n):
		distance = euc(A[i,:],A[j,:])
		dis.append([i+1,j+1,distance])

print(A)
print()
for i in range(len(dis)):
	print(dis[i])



更多相关文章

  1. python函数的属性
  2. python学习笔记10(函数一): 函数使用、调用、返回值
  3. Linux下共享内存相关函数
  4. Linux回调函数的应用---已经验证
  5. c中变参函数的理解和编写(hello world引发的思考)
  6. 浅谈Oracle函数返回Table集合
  7. Linux-C语言函数手册
  8. Linux 下nice 函数用法提高一个进程的友善值
  9. 设置查看linux 造成程序Core dumped 的函数调用层次

随机推荐

  1. Shake Android ui elements
  2. JS判断手机操作系统(ios或android)并跳转到
  3. Android ORM框架GreenDao用法
  4. Android(安卓)databinding 双向绑定(Demo)
  5. 让android应用程序获得system权限
  6. android 中 涉及到context的时候this和th
  7. eclipse for android安装过程
  8. Android Socket开发 注意事项
  9. Android 相关属性
  10. Android 代码自动提示功能