python
1def Hi(t):#投げ上げ後の軌道 2 Hi=(_hi[-1])+(_vi[-1])*t-(1/2)*g*t**2 3 return Hi
と関数Hi(t)を定義した後,
_water=[] _Hmax=[] while i<=0.8: t=0 v=0 h=0 vi=0 hi=0 x=xi water=S*rho*(1-xi)#水の量 _water.append(water) _t=[] _x=[] _hi=[] _vi=[] _himax=[] while x<=L: k1=dxdt(x)*dt; k2=dxdt(x+k1/2)*dt; k3=dxdt(x+k2/2)*dt; k4=dxdt(x+k3)*dt; k=(1/6)*(k1+2*k2+2*k3+k4); #水の量を変えた時の速度をルンゲクッタで求める j1=dvdti(x)*dt; j2=dvdti(x+j1/2)*dt; j3=dvdti(x+j2/2)*dt; j4=dvdti(x+j3)*dt; j=(1/6)*(j1+2*j2+2*j3+j4); hi=vi*t#水が入っている時の時間と高さ _t.append(t) _x.append(x) _vi.append(vi) _hi.append(hi) t+=dt; x+=k; vi+=j; himax=max(_hi)#水が入っている時の最高点 _himax.append(himax) Himax = max(Hi(t))#問題の箇所!!!!!!!!!! Hmaxi=max(himax,Himax) _Hmax.append(Hmaxi) i+=di;
と,ごちゃごちゃと先ほどの関数Hi(t)の最大値を途中で登場させようと試みたのですが,
TypeError Traceback (most recent call last) <ipython-input-15-4b6a232c5c76> in <module>() 44 himax=max(_hi)#水が入っている時の最高点 45 _himax.append(himax) ---> 46 Himax = max(Hi(t)) 47 Hmaxi=max(himax,Himax) 48 TypeError: 'float' object is not iterable
と,エラーが発生してしまいました。そもそもhiやviはiに依存する関数で,そのiをwhileで動かし,その中でwhileを用いたルンゲクッタを行なっている,という流れです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/26 02:33