Open ahmetanildindar opened 5 years ago
Merhabalar, Örnek olması için bir kodu sizinle paylaşıyorum.
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Sat Sep 14 16:53:13 2019 @author: ahmetanildindar """ #%% GEREKLİ MODÜLLERİN EKLENMESİ ============================================================================= import numpy as np import matplotlib.pyplot as plt # ============================================================================= #%% KÜTLE VE RİJİTLİK MATRİSİNİN OLUŞTURULMASI ============================================================================= # serbestlik derecesi atanması dof = 2 # kütle ve rijitlik tanımlaması m , k = 1 , 1 # kütle matrisi M = m * np.diag( [1,1] ) # rijitlik matrisi K = np.array([[2*k , -k ], [-k , k ]]) #%% ÖZDEĞER VE ÖZVEKTÖRLERİN OLUŞTURULMASI============================================================================= # As = np.dot( np.linalg.inv(M) , K) # Öz değerleri ve özvektörler D,V = np.linalg.eig(As) # Sıralayalım idx = D.argsort()# [::-1] D = D[idx] V = V[:,idx] # Açısal frekansların hesabı w = [np.sqrt(item) for item in D] # Titreşim periyotlarının hesabı T = [2*np.pi/item for item in w] # Özvektörleri en üst kata göre normalize edelim V_norm = np.zeros( V.shape ) for kolon_no , norm_deger in enumerate(V[dof-1 , :]) : V_norm[: , kolon_no] = V[:,kolon_no] / norm_deger #%% GÖRSELLEŞTİRME ============================================================================= # Görselleştirme için Özvektörlere sıfır satırının eklenmesi V_norm_fig = np.vstack([ np.zeros(dof) , V_norm ]) fig, axs = plt.subplots(1, dof , sharey=True , figsize=(10,4)) fig.subplots_adjust(hspace=0) fig.suptitle("Mod Şekilleri", fontsize=18) for i in range(dof): axs[i].plot( np.zeros(dof+1) , np.arange(dof+1) ,"grey" , marker="o") axs[i].plot( V_norm_fig[:,i], np.arange(dof+1) , "r",marker = "o", MS=10) axs[i].set_title(f"w = {round(w[i],3)}Hz & T = {round(T[i],3)}sn") axs[i].set_ylim(0)
Merhabalar, Örnek olması için bir kodu sizinle paylaşıyorum.