---
# System prepended metadata

title: 最適化技術実 質問回答ページ

---

# 最適化技術実 質問回答ページ

## リンク

- [第1回講義用質問フォーム](https://docs.google.com/forms/d/e/1FAIpQLSd7cQQqJzd2sv_WzmBOclsx8o1XqIeJMbN5BAxIgsHDs7O7PQ/viewform)
- [第1回講義用回答状況](https://docs.google.com/spreadsheets/d/12Iu5uUfpL05LmWYHhtfZdBzm9RSJPJWPb1lgRiXHOx0/edit#gid=0)
## 質問&回答について
「`質問番号n`」の形で見出しをつけます．
基本的には新しい回答ほど上位に表示されます．
回答状況ページで回答状況を確認後，
Ctrl+F，Cmd+Fで自分の質問番号をページ内検索してください．
ただし，回答状況のH列は「回答書き込み完了」ではなく「**今から回答を行います**」の印です．

質問量に依っては「重複した質問」欄の更新が止まる場合があります．
そのため，重複した質問は回答の場所を検索出来ないことがあります．
また，質問する前に必ずこのページを見て，**類似の質問がないことを確認**してからGoogleフォームで質問を投稿してください．

# 第5回
>本日の講義資料の「スカラー関数の求解」においてニュートン法を用いるにあたってx0=0.2としているのはなぜでしょうか。またhalleyでもx0=0.2として実行して良いのでしょうか。


特に理由はありません。halleyでもそのようにしてもよいです。


# 第3回

### 質問番号13

>伝え方が悪かったです、すみません。
課題文では文字列のリストが変数に与えられたとき、とありますが与えられているstr1が文字列のリストとして与えられていないので、コードの組み方ではなく、与えられているものをどう変えておけば良いでしょうか、という質問です。

課題の該当箇所を，

strings = ['The', 'quick', 'brown']
[ここに内包表記を書く]

にしてください。失礼しました。（小林）



### 質問番号12


# 第2回

### 質問番号11
> 課題14についてです。自分の書いたプログラムで、なぜFalseと出力されてしまうのでしょうか。print(f.read() == 'HELLO WORLD\n')を実行する前に、 print(f.read())を実行すると、HELLO WORLDと出力されるのでTrueだと思うのですが、なぜFalseなのでしょうか。

第2回の講義資料内"4-1. ファイル入出力の基本"にそのヒントがありますのでご参照ください。
print(f.read() == 'HELLO WORLD\n')の前に
with open('print-test-upper.txt','r') as f:
を追加するとどうなるかを確認してみてください。


### 質問番号10
> 先ほどと似たような質問で申し訳ないのですが、handle_collision(dic1_orig,'tea')の宣言だけで、引数としてしか利用していないdic1_origが変更されているのはなぜですか。

今回書いてくれたコード内では、引数として参照したグローバルなdic1_origに要素を追加しているためではないでしょうか。

下の2つのコードを実行して結果を比べてみてください。
関数内でローカルに再定義した場合には、グローバルな変数aが変更されないことが確認できるかと思います。

```
def update_list(lst):
    lst.append('orange')

a=['apple']
print(a)
update_list(a)
print(a)
```

```
def update_list(lst):
    lst=['apple']
    lst.append('orange')

a=['apple']
print(a)
update_list(a)
print(a)
```



### 質問番号9
> 課題２で
確認のためにhandle_collision(dic1_orig,'hi')で2文字の単語を入れてみたら、直前で行ったhandle_collision(dic1_orig,'tea')の'tea'がdic1に代入されたままの状態になってしまっているのですがなぜなのでしょうか。
global変数にはしていないので元の変数は変更されないはずだと思っているのですが


dic1_orig自体の宣言が関数handle_collision内でなく、グローバルにされているためだと思います。
今回の講義資料内"変数とスコープ"を今一度ご参照ください。



### 質問番号8

> できればイヤホンをし続けていたくないのですが、WebexMeetingから抜けて課題を行っても問題ありませんでしょうか？



アナウンスする場合は，WebexMeetingのメッセージにも書き込むようにします．ですので，イヤホンはとっていいですが，WebexMeetingには，いるようにしてください．みなさんが，実際に4,5限に実験に参加している，という記録の意味もあります． (by Kobayashi)

# 第1回



### 質問番号7

> Googleドライブのデータを共有するということをやった事がなかったので、課題提出前に、作成したアカウント以外のアカウントからリンクを押して開けるかを試してみました。そうすると、リクエスト権を送信するかどうかという旨の画面が表示され、すぐにはColaboratoryが表示されませんでした。リンクをクリックしたらすぐに見られるようにするにはどうしたら良いでしょうか？


![](https://i.imgur.com/JkZRIpy.png)
右上の共有を押して
![](https://i.imgur.com/p6mfXWn.png)
権限をリンクの知っている全員になるようにしてください。


### 質問番号6

>課題を解くにあたり、今回配られたColaboratoryの資料には記載されていない、他の講義で学んで知っている方法を使って解答してもよいでしょうか？

かまいませんが，その「他の講義で学んで知っている方法」が，その課題の目的とどう関連するかを，教員にわかるように説明してください．すべての課題は，実施目的があります．例えば，二次方程式の解の公式を使う方法を学ぶことを目的とした課題として，

$$
x^2 - 4x + 4 = 0の解を求めなさい．
$$

という課題が出たとします．目的に沿った解答は，二次方程式の解の公式に当てはめて，２と－２を答えるものです．しかし，因数分解をしても，同じ解には到達します．しかしその場合，解答者が果たして解の公式を使う方法をマスターしたのかどうかはわかりません．この場合は，因数分解で解に至っても，解の公式の使い方をマスターしたことを文章で説明する必要があります．ほかの方法としては，弟に聞いた（母に聞いた），というのもありです。弟に聞いた結果、解は2と-2であることがわかった，というのもありです．その場合は，弟に聞いて解を得たことと，自分が解の公式をマスターしたこととの関連性を文章で説明する必要があります．

### 質問番号5

>return文の返り値に直接値が求まるようなコードを組んで、1行追加するだけで課題に答えられる場合でも、わかりやすさや見やすさのために複数行でコードを書いても問題ありませんでしょうか？

はい，問題ありません．

### 質問番号4

> レポート作成に関する質問です。 概要部分は各回１つでよく、目的・方法・手順・結果・考察・まとめは課題1つ1つに対してそれぞれ作成するという認識でよろしいでしょうか？ 

今回は課題数が多いので，目的・方法・手順・結果・考察は，課題１つ１つに対してそれぞれ作成するのがよいと思います．まとめは，概要と同じように，１つがよいかと思います．概要とまとめの内容は，重複する部分もあると思いますが，それで結構です．

> また、課題への解答は、手順の部分に日本語で説明を交えながらプログラムのコードを書いていくということでしょうか？それともコードは手順部分とは全く別のところで行うのでしょうか？

「手順の部分に日本語で説明を交えながらプログラムのコードを書いていく」というのは一つの自然な方法と思います．今回は，プログラムを作成・実行する実験ですので，その手順の説明の中に，プログラムのコードが入るのは自然なことと思います．例えば，作成したプログラムをまとめて載せて，その次の段落（テキストセル）で，何行目の部分はどういう処理を行う，という説明を行うのは１つの方法かと思います．プログラムが長い場合は，適宜，分割して，日本語の文章を間に入れる方法もあるかと思います．

--- 

### 質問番号3
> 自分で新規のノートブックを開いて小林先生の指示に従ってコードを打っていますが、コースパワーに先ほど追加された4つ目のものは開けません。自分で新しく開いたノートブックで授業を追っていっても大丈夫でしょうか？

質問番号1の回答のやり方でうまくアップロードできないでしょうか。もしうまくいかないようであれば、自分で作った新しいノートブックを追っていただいても問題ありません。

（質問1についてもですが）可能であれば、より詳細な状況を書いていただけると助かります。例えば、
- コースパワーの4つめのファイルをローカルにダウンロードし、
- それをGoogle Driveにアップロードし
- Google Drive上から「開く」を押しても開けず、「xxxxx」というメッセージが出ます

というように、より具体的に書いてもらえると、こちらも対応を考えやすいです。

--- 


### 質問番号2

>colaboratoryで開こうとするとノートブックエラーで開けないのですが対処できますでしょうか

https://colab.research.google.com/

こちらにアクセスして、新規作成でアップロードと選んで先ほどの`.ipynb`ファイルをアップロードしてみてもらえますか。
![](https://i.imgur.com/eCruIPx.png)


これでもダメなら以下でGoogle Chromeをダウンロードしてこちらを利用してもらえますか？（Microsoft Edgeなどでは動かない場合があるそうです）
https://www.google.com/intl/ja_jp/chrome/

---


### 質問番号0 （回答例）

>hogeがhogehogeの場合，hogehogehogeはhogeですか？

<!--質問は引用の形で書いてください-->

```C: main.c
#include <stdio.h>

int main(void) {
  printf("Hello World\n");
  return 0;
}
```

<!--必要に応じて↑コードや，↓エラーメッセージを書いてください-->

```
 clang-7 -pthread -lm -o main main.c
main.c:4:3: warning: implicit declaration of function 'print' is
      invalid in C99 [-Wimplicit-function-declaration]
  print("Hello World\n");
  ^
1 warning generated.
/tmp/main-071bdf.o: In function `main':
main.c:(.text+0x1c): undefined reference to `print'
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
compiler exit status 1
 
```

XXXがYYYなのでZZZをAAAするとBBBがCCCです．
重複した質問：質問番号i, 質問番号j,

<!--学生さんが検索しやすいように，
    「重複した質問」欄も「質問番号n」の形で
    質問番号を書いてください．-->

<!--回答の手間を省くため，回答者と「質問」「回答」の見出しは不要です-->

---
