از پارسکدرز بیشترین بهره را ببرید و رویای کاری خود را زندگی کنید.
هفت ماه پیش منتشر شده
تعداد بازدید: 150
کد پروژه: 483135
شرح پروژه
#کد_پروژه: 72929
موضوع: پروژه پایتون //
من یه کد پایتون داشتم چندتا خطا داره خواستم ببینم میتونم ازتون کمک بگیرم import numpy as np
import matplotlib.pyplot as plt
# input
k = 2 # stiffness
dr = 0.05 # damping ratio
T0 = 3 # period
mass = 2 # mass
wn = np.sqrt(k / mass) # natural frequency of structure
w0 = (2 * np.pi) / T0 # frequency of loading
dt = 0.02 # time step
f = lambda t: (t**3 + 1) # function of loading
n = 4 # number of repeat of one period of loading
nf = 10 # number of terms (sin & cos) in Fourier series
# periodic loading
p = np.array([f(num0) for num0 in np.arange(0, T0, dt)])
q = np.tile(p, n)
# a0
suma0 = 0
for num1 in range(1, int(T0 / dt) + 1):
suma0 += (dt * (f(num1 * dt) + f((num1 - 1) * dt)) / 2)
a0 = suma0 / T0
# Calculation of aj
vector_aj = np.zeros(nf)
for num2 in range(1, nf + 1):
sum_aj = 0
for num3 in range(1, int(T0 / dt) + 1):
sum_aj += (dt * ((np.cos(num2 * w0 * (num3 * dt)) * f(num3 * dt) + np.cos(num2 * w0 * ((num3 - 1) * dt)) * f((num3 - 1) * dt)) / 2))
aj = (2 / T0) * sum_aj
vector_aj[num2 - 1] = aj
print(f'a{num2}={aj}')
# Calculation of bj
vector_bj = np.zeros(nf)
for num4 in range(1, nf + 1):
sum_bj = 0
for num5 in range(1, int(T0 / dt) + 1):
sum_bj += (dt * ((np.sin(num4 * w0 * (num5 * dt)) * f(num5 * dt) + np.sin(num4 * w0 * ((num5 - 1) * dt)) * f((num5 - 1) * dt)) / 2))
bj = (2 / T0) * sum_bj
vector_bj[num4 - 1] = bj
print(f'b{num4}={bj}')
# Calculate periodic function using Fourier series
pfourier = np.zeros(int(T0 / dt))
for num7, t in enumerate(np.arange(0, T0, dt)):
sum_cos = sum(vector_aj[num6] * np.cos(num6 * w0 * t) for num6 in range(nf))
sum_sin = sum(vector_bj[num6] * np.sin(num6 * w0 * t) for num6 in range(nf))
pfourier[num7] = a0 + sum_cos + sum_sin
# Periodic pfourier
Q = np.tile(pfourier, n)
# Plot exact periodic function and periodic Fourier
time = np.arange(0, n * T0, dt)
plt.subplot(2, 1, 1)
plt.plot(time, q, 'm')
plt.plot(time, Q, 'k--')
plt.xlabel('t(s)')
plt.ylabel('Force')
# Response to loading (steady state)
u0 = a0 / k
u = np.zeros(int(n * T0 / dt))
for num8, t in enumerate(np.arange(0, n * T0, dt)):
u_cos_j = 0
u_sin_j = 0
for num9 in range(1, nf + 1):
beta_j = (num9 * w0) / wn
u_cos_j += (vector_aj[num9 - 1] / k) * ((2 * dr * beta_j * np.sin(num9 * w0 * t) + (1 - beta_j**2) * np.cos(num9 * w0 * t)) / ((2 * dr * beta_j)**2 + (1 - beta_j**2)**2))
u_sin_j += (vector_bj[num9 - 1] / k) * ((-2 * dr * beta_j * np.cos(num9 * w0 * t) + (1 - beta_j**2) * np.sin(num9 * w0 * t)) / ((2 * dr * beta_j)**2 + (1 - beta_j**2)**2))
u[num8] = u0 + u_cos_j + u_sin_j
# Plot u-t
plt.subplot(2, 1, 2)
plt.plot(time, u, 'b')
plt.xlabel('t(s)')
plt.ylabel('u')
plt.show()
مهارت ها و تخصص های مورد نیاز
بودجه
100,000 تومان تا 300,000 تومان
مهلت برای انجام
5روز
وضعیت مناقصه
بسته
درباره کارفرما
عضویت دو سال پیش
قادر به انجام این پروژه هستید؟
مهلت ارسال پیشنهاد قیمت برای این پروژه تمام شده است
به رایگان یک حساب کاربری بسازید
مهارتها و تخصصهای خود را ثبت کنید، رزومه و نمونهکارهای خود را نشان دهید و سوابق کاری خود را شرح دهید.
به شیوهای که دوست دارید کار کنید
برای پروژههای دلخواه در زمان دلخواه پیشنهاد قیمت خود را ثبت کنید و به فرصتهای شغلی منحصر به فرد دسترسی پیدا کنید.
با اطمینان دستمزد دریافت کنید
از زمان شروع کار تا انتهای کار به امنیت مالی شما کمک خواهیم کرد. وجه پروژه را از ابتدای کار به امانت در سایت نگه خواهیم داشت تا تضمین شودکه بعد از تحویل کار دستمزد شما پرداخت خواهد شد.
میخواهید شروع به کار کنید؟
یک حساب کاربری بسازید
بهترین مشاغل فریلنسری را پیدا کنید
رشد شغلی شما به راحتی ایجاد یک حساب کاربری رایگان و یافتن کار (پروژه) متناسب با مهارتهای شما
است.
پیدا کردن کار (پروژه)
تماشای دمو روش کار