暇つぶし2chat MATH
- 暇つぶし2ch504:132人目の素数さん
24/04/24 13:43:58.30 4QhK5edU.net
>>482
逆の言い方をすると、Rがあれで上手くいっているのは、
真になるif文に出会った時、return命令に従って関数を抜けているから。
その際、returnの直後に書かれているものが、関数の値となる。
mathematica方の、re=...はただの代入文。関数から抜ける命令など含まれていない。
流れに従って次の命令が実行される。
あの書き方では、三つのIf文は、必ず処理され、reに何かの値が代入されるかもしれないが、いずれ場合であろうとも、
re=x+y*Iが最終的な値になる。その計算の最中にエラーが生じる。
If文をネストして正しい流れのプログラムにする方法もあるが、次のような方法もある。
re=Which[
(a2-b2)(c1-d1)==(a1-b1)(c2-d2),Null,
(a-b)*(c-d)==0,Null,
a1==b1 && c1!=d1,a1+((d2-c2)/(d1-c1)(a1-c1)+c2),
a1!=b1 && c1==d1,re=c1+((a2-b2)/(a1-b1)(c1-a1)+a2)I,
True,p=(a2-b2)/(a1-b1);q=(c2-d2)/(c1-d1);x= ((p*a1 - a2) - (q*c1 - c2))/ (p-q);y= p*x - (p*a1 - a2);x+y*I
]


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch