線性代數作業

2022-09-13 03:12:18 字數 3658 閱讀 8814

# 產生乙個方波(x,y)

x = np.linspace(-10,10,300)

y=for i in np.cos(x):

if i>0:

else:

y=np.array(y)

# write your code, fourier function

plt.plot(x,y,color='g',label='origin')

plt.plot(x,fourier(x,y,3),color='r',label='3')

plt.plot(x,fourier(x,y,8),color='b',label='8')

plt.plot(x,fourier(x,y,23),color='k',label='23')

plt.legend()

plt.axis('equal')

plt.show()

#

!/usr/bin/env python

#coding: utf-8

#import

numpy as np

import

matplotlib.pyplot as plt

from solutions_3 import *a=np.array([[3,1],[2,4]])/4.0

#write your code

#def eigshow(a):

eigshow(a)

pca

#

!/usr/bin/env python

#coding: utf-8

#import

numpy as np

import

matplotlib.pyplot as plt

def pca(datamat, topnfeat=5):

meanvals = np.mean(datamat, axis=0)

meanremoved = datamat - meanvals #

減去均值

covmat = meanremoved.t.dot(meanremoved) #

求協方差方陣

ei**als, ei**ects = np.linalg.eig(covmat) #

求特徵值和特徵向量

ei**alind = np.argsort(ei**als) #

對特徵值進行排序

ei**alind = ei**alind[:-(topnfeat + 1):-1]

redei**ects = ei**ects[:, ei**alind] #

除去不需要的特徵向量

lowddatamat = meanremoved.dot(redei**ects) #

求新的資料矩陣

reconmat = (lowddatamat.dot(redei**ects.t)) +meanvals

reducedata = lowddatamat +np.mean(datamat)

return

reducedata,reconmat

n=100x=np.linspace(2,4,n)

y=x*2-4x1=x+(np.random.rand(n)-0.5)*1.5y1=y+(np.random.rand(n)-0.5)*1.5data =np.array([x1,y1])

a,b=pca(data.t,1)

plt.plot(x,y,color='

g',linestyle='

-',marker='',label='

ideal')

plt.plot(x1,y1,color='

b',linestyle='',marker='

o',label='

noise')

plt.plot(b[:,0],b[:,1],color='

r',linestyle='',marker='

>

',label='

recon')

plt.plot(a[:,0],np.zeros(n),color='

k',linestyle='',marker='

*',label='

lowd')

plt.legend()

plt.axis(

'equal')

plt.show()

svd

#

!/usr/bin/python

#-*- coding: utf-8 -*

#copy right by heibanke

import

numpy as np

from matplotlib import

pyplot as plt

a=np.array([[-0.2,-1],[1.1,0.5]])

u,s,v=np.linalg.svd(a)

#s=np.array([[s[0],0],[0,s[1]]])

#modified by conkang

s=np.diag(s)

fig =plt.figure()

ax0 = fig.add_subplot(221)

ax1 = fig.add_subplot(222)

ax2 = fig.add_subplot(223)

ax3 = fig.add_subplot(224)

def plot_2d_mat(m,ax,text=""

): ax.plot([0,m[0,0]],[0,m[1,0]],'

b-o'

) ax.plot([0,m[0,1]],[0,m[1,1]],'

r-o'

) ax.set_title(text)

ax.axis(

'equal')

ax.set_xlim([-1.5,1.5])

ax.set_ylim([-1.5,1.5])

ax.grid(true)

plot_2d_mat(np.eye(2),ax0,"

origin")

plot_2d_mat(a,ax1,

"a (usv) matrix")

plot_2d_mat(v.t,ax2,

"v matrix")

plot_2d_mat(s.dot(v.t),ax3,

"sv matrix")

plt.show()

線性代數 線性代數的本質

線性代數在機器學習的領域中扮演者十分重要的角色,所以這裡岔開先整理一些線性代數的基本概念和計算方法。這裡是3blue1brown的線性代數課程的截圖和筆記。作為快速複習的網路筆記。本課程的特點 通過影象展現線性代數計算在幾何圖形上意義。這樣能更好的理解線性代數為什麼叫做線性代數。線性代數為什麼採用這...

線性代數入門 1 什麼是線性代數?

線性代數幾乎是每個學理工科的大學生都會學的一門課,然而我感覺大家對這門課的感覺都不怎麼好,很多人都覺得不知道線性代數是做什麼的,或者為了應付考試學會了一些計算和解題的方法。但在其他課程學習中卻常常看到那些矩陣 向量等等,便頭疼萬分,對線性代數更是深惡痛絕。最後乙個大學學下來,還是沒明白線性代數是什麼...

線性代數入門 1 什麼是線性代數?

線性代數幾乎是每個學理工科的大學生都會學的一門課,然而我感覺大家對這門課的感覺都不怎麼好,很多人都覺得不知道線性代數是做什麼的,或者為了應付考試學會了一些計算和解題的方法。但在其他課程學習中卻常常看到那些矩陣 向量等等,便頭疼萬分,對線性代數更是深惡痛絕。最後乙個大學學下來,還是沒明白線性代數是什麼...