daha önce matlab'da çözdüğüm bir problemi python'da çözmeyi deniyorum. problem basit; bir fonksiyon var, bu fonksiyonun bağlı olduğu bir parametre belli bir aralıkta değiştirilecek, bu parametrenin aldığı her değerde fonksiyonun aldığı maksimum değer bulunacak, sonra da bu parametre vs max değerleri grafiği çizilecek.

bi yerde yanlışım var ama çözemedim. acaba bu ufak 28 satırlık kodu inceleyip şurada yanlış yapmışsın diyebilir misiniz?

kod:

www.dropbox.com

 

sanırım içerideki while döngüsüne her girişinden önce umax dizinini sıfırlaman gerekir.

sanırım cevap fonksiyonunu çizdirmeye çalışıyorsun. tam olarak anlamadım, matematiksel ifadeni de gösterirsen belki daha fazla yardım bulabilirsin.

marido

şu problemini çözüyor mu bir dener misin?
identation gitmiş ama idare edersin.


from __future__ import division
import math
#import matplotlib.pyplot as plt

u = []
t = 0
tn = 0.1
tnvec = []
umax = []

while tn < 2:
wn = 2 * math.pi / tn
u=[]
t=0
while 2 > t:
if t <= 0.5:
u.append(0.2 * (1 - math.cos(wn * t)))
elif 0.5 < t <= 1:
u.append(0.3 * math.cos(wn * (t - 0.5)) - 0.2 * math.cos(wn * t) - 0.1)
elif 1 < t <= 1.5:
u.append(0.3 * math.cos(wn * (t - 0.5)) - 0.3 * math.cos(wn * (t - 1)) - 0.2 * math.cos(wn * t) + 0.2)
elif t > 1.5:
u.append(
0.3 * math.cos(wn * (t - 0.5)) - 0.2 * math.cos(wn * t) - 0.3 * math.cos(wn * (t - 1)) + 0.2 * math.cos(
wn * (t - 1.5)))
t += 0.01
if(len(u)>0):
umax.append(max(u))
tnvec.append(tn)
tn += 0.1

#plt.plot(tnvec,umax)
#plt.show()

marido

çok teşekkür ederim, sorunu hallettim. nerede yanlış yaptığımı anladım. indentation olayına alışık olmadığım için onla ilgili bir sıkıntım var diye düşünüyordum ama çok basit bir mantık hatasıymış.

çok sağolun tekrardan.

bellbane
1

mobil görünümden çık