回答編集履歴

2

append suffix

2022/10/29 14:30

投稿

ps_aux_grep
ps_aux_grep

スコア1579

test CHANGED
@@ -6,4 +6,4 @@
6
6
 
7
7
  余談ですが,`input`は[組み込み関数](https://docs.python.org/ja/3/library/functions.html)で用意されているものです.関数内で一時的とはいえ値で組み込み関数を上書きしてしまうのは一般的にナンセンスとされています.
8
8
 
9
- また,長々と書かれている式ですが,ブロードキャスト演算を用いればより簡潔に記述できると思われます.
9
+ また,長々と書かれている式ですが,[ブロードキャスト](https://numpy.org/doc/stable/user/basics.broadcasting.html)を用いればより簡潔に記述できると思われます.簡潔に書くことで,今回のようなエラーの発生を防止できるよう,コード全体の見通しが良くなると思います.

1

fix answer

2022/10/29 14:29

投稿

ps_aux_grep
ps_aux_grep

スコア1579

test CHANGED
@@ -1,5 +1,9 @@
1
- 関数`dynamicalsystem(state, input)`における`np.vstack()`の中で`BB3*[3,0]`としている箇所があります.普通,`リスト * 整数`ではリストが複製されますが,`BB3`は浮動小数点数で,`浮動小数点数 * リスト`となっています.こ演算におて出るエラー`TypeError: can't multiply sequence by non-int of type 'float'`す.
1
+ 関数`dynamicalsystem(state, input)`における`np.vstack()`の中で`BB3*[3,0]`としている箇所があります.普通,`リスト * 整数`では掛けた整数の大きさ分だけのリストが複製されますが,`BB3`は浮動小数点数で,`浮動小数点数 * リスト`となっています少数点数という中途半端なサイズ配列を複製できなのでエラー`TypeError: can't multiply sequence by non-int of type 'float'`になります.
2
2
 
3
3
  同様に`文字列 * 整数`は可能ですが`文字列 * 浮動小数点数`は不可能で同じエラーが出ます.
4
4
 
5
5
  おそらく`BB3 * state[3, 0]`と書きたかったのだと察します.
6
+
7
+ 余談ですが,`input`は[組み込み関数](https://docs.python.org/ja/3/library/functions.html)で用意されているものです.関数内で一時的とはいえ値で組み込み関数を上書きしてしまうのは一般的にナンセンスとされています.
8
+
9
+ また,長々と書かれている式ですが,ブロードキャスト演算を用いればより簡潔に記述できると思われます.