トップページ⇒math
1001コメント317KB

〓 Mathematica 2 〓

■ このスレッドは過去ログ倉庫に格納されています
0001132人目の素数さんNGNG
        _....._{{ 〃
      , - ' ,..、、.ヾ{{フ'⌒`ヽ、
    /  ,:', -‐‐` ´ '´⌒ヽ ヾ:、
.   ,'   ,'´ ,ィ ,ィ ,' ,   `ヽ',  ',-<
    ,'   .i  /|. /.| { i,  i,  }.  }_,,))
   ! |  ! .,'-.{ ! !|; |`、.}゙!.! |.  ! ヽ.
   ', ', |Vァ=、゙、 `゙、!-_:ト,リ', l ! |   ゙',
    ヽ、', l:!Kノ}.     f:_.)i゙i: リ ! l ル 
     | l!iヾ- ' ,   .!__:ノ ゙ ,リ l リ'´     
.     ',|!!、    r‐┐   ` ノ'. /,イ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  
      'i!゙、ヽ、 ゙ー'  _, ィ,:',:''´    <  Mathematica に関する話題はここに書いてね!
      ゙:、ィ、jヾー::: 'iヘ .ノ',リ.        \___________________
   ,、- '´ ヽ、゙、   { `>"、  
  /\\    ',   }   //`ヽ

 ★前スレ

〓Mathematica〓
http://science2.2ch.net/test/read.cgi/math/985023298/
0357132人目の素数さんNGNG
>>355
とりあえず手書きで書いてみるべし
あと、極座標は教科書読めば書いてある

>>356
普通に積分すれば問題なし
0358132人目の素数さんNGNG
>>357
Mathematicaでグラフ、というかリサージュ図形を描きたいんです。
なんて入力したらいいですかね?
ParametricPlotで自力で何とかしようとしましたが、全然分からんかったっす。
0359132人目の素数さんNGNG
>>358
>>278
0360132人目の素数さんNGNG
>>348
通常の+の記号から想定される性質(可換)を持たないので
普通の人は別の記号で書くだろうな。

>>352
>>305の----より下をそのままコピペすると正しく{1,1}が表示されるが、
どのようなエラーが出るのか?

>>353
waringと混同するな & してないならエラーメッセージを貼れ。
0361132人目の素数さんNGNG
>>356
Cos[x/5 - 1] = Cos[1-x/5]
なんだからどっちを積分しようと同じだろ。
0362132人目の素数さんNGNG
>>349
Plot[{Sqrt[3 Cos[x]],-Sqrt[3 Cos[x]]},{x,0,Pi/2}]
とか
>>358
ParametricPlot[{Sin[x],Sin[4 x]},{x,0,2 Pi}]
とか
ウルフラムのマニュアルを見れば直ぐにわかるよ。
0363132人目の素数さんNGNG
>>349
Cos[5 \[Theta]]が負のときrをどうしたいのかわからないので、
Cos[\[Theta]]のことだったとして:
<<Graphics`
f[\[Theta]_] = Sqrt[3 Cos[\[Theta]]];
PolarPlot[{f[t], -f[t]}, {t, 0, 2 Pi/5}]
0364132人目の素数さんNGNG
>>360
要するに有る点に置いて0/0が発生するのが問題のようです
値は収束するんだけど、そこをまたいだ積分をやりたい
どうすればいいですかね?
0365132人目の素数さんNGNG
>>364
要するに>>329のとおりには実行してないわけだ。

自分で書き換えて、
>>353
> できませんでした…orz
> エラー出まくり…
どんなエラーメッセージも書かず、
どんなプログラムなのかも知らせずに、
>>364
> 要するに有る点に置いて0/0が発生するのが問題のようです
「要するに」で疑わしい要約をして
> 値は収束するんだけど、そこをまたいだ積分をやりたい
「値は収束する」と「そこ」か。一体なんの話なんだろうか。
…エスパー降臨待ちだな。
0366132人目の素数さんNGNG
>>365
>>329の通りに変えたのですができませんでした
同じような問題が発生しそうな

NIntegrate[Sin[x]/x, {x, -1, 1}]
も、x=0の点でエラーが出るようです

(Power::"infy" ) "無限式(1/0)が見つかりました.")
"被積分関数\!\(Indeterminate\)は\!\({x}\) = \!\({0}\)では数値でありません."

たとえば今書いた式の場合、どう対処すれば良いのでしょうか?
0367362NGNG
>>349
Cos が負の部分も描かせたい(複素数として)のなら次のようにする。
  
f[x_]:=Sqrt[3 Cos[x]]
a=ParametricPlot3D[{{x,Re[f[x]],Im[f[x]]},{x,-Re[f[x]],-Im[f[x]]}},{x,0,Pi/2}]
b=ParametricPlot3D[{{x,Re[f[x]],Im[f[x]]},{x,-Re[f[x]],-Im[f[x]]}},{x,Pi/2,3 Pi/2}]
c=ParametricPlot3D[{{x,Re[f[x]],Im[f[x]]},{x,-Re[f[x]],-Im[f[x]]}},{x,3 Pi/2,2 Pi}]
Show[a,b,c]

プロットの範囲を一挙に {x,0,2 Pi} とすると Cos[x] の正負が反転するところで
勾配が無限大になって誤差が出ます。これは PlotPoints->1000 程度では
誤魔化せないので、上のように部分に分けて描かせました。
0368132人目の素数さんNGNG
>>366
特異点(?)の場所を指示して
 
NIntegrate[Sin[x]/x,{x,-1,0,1}]

あるいは解析解を求めてから数値化する
 
N[Integrate[Sin[x]/x,{x,-1,1}]]

ではどうでしょうか?

0369132人目の素数さんNGNG
>>366
>>329で動かないということは、Mathematicaのバージョンが違うのだろうか。

特異点もどきの場所が正確に特定できるなら>>368の一行目が利用できるが、
そうでないなら、オプションにMethod -> MonteCarloを指定すると
解決するかもしれない。
0370132人目の素数さんNGNG
>>366
f[x_] := If[x == 0, 0.0, Sin[x]/x];
NIntegrate[f[x], {x, -1, 1}]
とすれば大丈夫

0371132人目の素数さんNGNG
>>370
x -> 0 で Sin[x]/x -> 1 だから、
g[x_]:=If[x==0,1.0,Sin[x]/x]
としてみると
f[x_]:=If[x==0,0.0,Sin[x]/x]
の積分と僅かに違います
 
正しいグループは
N[Integrate[Sin[x]/x,{x,-1,1}]]
NIntegrate[g[x],{x,-1,1}]

別なグループは
NIntegrate[Sin[x]/x,{-1,0,1}]
NIntegrate[f[x],{x,-1,1}]

でグループ間の差は 2.2*10^(-16) でした。
  
面白いですね。
0372132人目の素数さんNGNG
>>371
面白いか?
アルゴリズムの都合でちょっと誤差がでただけだろ
(どっちも通常の意味の積分値は同じ)。
誤差が少ないところは流石なのかもしれないが。
0373132人目の素数さんNGNG
ちょっと調べれば解るような学校の宿題をここで質問するのはやめてくれないか?
0374132人目の素数さんNGNG
Mathematicaで地図の等高線を作ることはできるの?(色付き、茶色、緑とか)
0375132人目の素数さんNGNG
>>370 ミステイク 
f[x_]:=If[x==0,1.0,Sin[x]/x] の間違いでした。すんません。
0376すいません教えてくださいNGNG
モンテカルロ法により、
[0,1]でe^xの積分の近似値を求めその値を実際の積分の値と比較せよ。
ってゆうもんだいなんですけどどうやったらいいんですか?誰か教えてくださいませんか??おねがいします
0377132人目の素数さんNGNG
先生と友達に聞いたらいいと思うよ
0378すいません教えてくださいNGNG
友達もわかんないんですよ
0379KingOfKingMathematician ◆H06dYXOYLA NGNG
ver4.0のシリアル教えろ
なくして困っている
0380132人目の素数さんNGNG
5.0買え
0381132人目の素数さんNGNG
>>374
ContourPlotで行けるんでね?
0382132人目の素数さんNGNG
>>379
バーカ、市ね。くたばれ
0383132人目の素数さんNGNG
TraditionalForm[
Cos[x/5-1]
]

いじょ
0384132人目の素数さんNGNG
\!\(TraditionalForm[Cos[x\^2 + x/5 - 1]]\)
0385132人目の素数さんNGNG
ArcTan(163/217)でArcTanを求めるにはどのようにすればいいのでしょうか?
最終的に" ° "で答えが欲しいのですが...
今日体験版を落として、触っているのですが分からなくて・・・
0386132人目の素数さんNGNG
電卓で計算
0387385NGNG
簡素化して書いているので実際はもう少し複雑で代入を繰り返さなければならないのでなんとか教えて頂けないでしょうか・・・
0388385NGNG
すみません、間違ってました。
ArcTan(163/217)の答えを出したいのですが
答えも ArcTan(163/217)とでて" ° "で答えが欲しいのですが...
0389132人目の素数さんNGNG
>>338
\!\(N[ArcTan[163\/217]\ 180\/π]\)
0390385NGNG
本当に助かりました!どうもありがとうございましたm(_ _)m
0391132人目の素数さんNGNG
おれはN[]よりも//Nの方を良く使うな
0392132人目の素数さんNGNG
461
0393132人目の素数さんNGNG
mathematica student 4.1を使っていたのですが今年の3月で卒業になったので、
5.0proにup gradeすることに決めました。

そこで聞きたいのですが
今現在パソコンを買い換えたのでmathematica student版が
インストールされていません
こういう場合でもアップグレードできるのでしょうか?
0394132人目の素数さんNGNG
>>393
大丈夫。
とりあえずここら辺でも見ておけ。

ttp://www.varsitywave.co.jp/products/mathematica/html/math-upgrade.html
0395132人目の素数さんNGNG
x軸として x={x1,x2,x3,...}
y軸として y={y1,y2,y3,....}
という感じにデータセットがあるんですが(要素数は同じ)、
これを
test = { {x1,y1}, {x2,y2},},....} といった感じのx,yを対応させたリストに
するにはどうしたらいいでしょうか。すべてただの実数です。
どなたかご教示願います・・・。
0396132人目の素数さんNGNG
254
0397132人目の素数さんNGNG
>395
それはできますね
マニュアルかヘルプを読みましょうよ
0398132人目の素数さんNGNG
transpose
0399132人目の素数さんNGNG
>>397,398
ありがとうございました。
簡単にできました。申し訳ないです。
0400132人目の素数さんNGNG
400
0401132人目の素数さんNGNG
Ver5を持っている人へ
GUIKITが出ています。
公式ホームページから
ライセンスナンバーだけでダウンロードできます。


インストールする場所と
ヘルプファイルの更新をお忘れなく。
0402132人目の素数さんNGNG
NxNのでっかい対称行列の固有値を求めたいのですが、

Cのプログラムでmatrix.txtと
1.0 1.1 1.2 ... ←N個
1.1 2.0 1.3 ... ←N個
...
↑N個
の形式でN行で出力させてから

ReadList["matrix.txt",Number,RecordLists->True]
Eigenvalues[%]

とMathematicaに読み込ませて固有値を計算させようとしています。

Nが200位になるとファイルの読み込みで非常に時間がかかってしまい、
必要としているN=1000程度だと2日ほど放置しましたが読み込みが完了しません。

固有値の計算で時間がかかるのならわかる気がするんですが、
ファイルの読み込みの段階で時間がかかるのが納得いきません。
これは仕様で仕方ないのでしょうか?
それとも私の読み込ませ方に問題があるのでしょうか?
計算機はXeonの2GDualメモリ1G(だったかな…)
VineLinuxでMathematicaのVersionは4.2.1.0です

突然研究で固有値を求めることになったMathematica超初心者ですが、
ご教授いただければと思います。゜゜(´□`。)°゜。
0403FeaturesOfTheGod ◆UdoWOLrsDM NGNG
Re:>402 私はよく分からないけど、読み込みを何回も行っているのではないだろうか?
もしそうでないとしても、固有値の計算は時間がかかる。(少なくとも私の知っているアルゴリズムでは。)
0404132人目の素数さんNGNG
>>402
読み込みにではなく、表示に時間がかかっている。
どうしても1000*1000の行列を眺めたいのでなければ

  ReadList["matrix.txt",Number,RecordLists->True];
  Eigenvalues[%]

とするといいだろう。
0405132人目の素数さんNGNG
デカルト座標から極座標に変換するように、下記のようにしたんですが
この角度のパラメータをラジアン表記でなく度数表記で一発出力させる
ためには、どういじればいいのでしょうか。

<< Calculus`VectorAnalysis`
SetCoordinates[Cartesian[x, y, z]];
x = 1.;
y = 1.;
z = 1.;
CoordinatesFromCartesian[{x, y, z}, Spherical]
0406132人目の素数さんNGNG
>>405
CoordinatesFromCartesian[{x, y, z}, Spherical] / Degree HoldForm[Degree]
0407132人目の素数さんNGNG
405です
>>406
ありがとうございます。実行してみました。
返数のうち最初の一つは長さなので、角度である後二つにDegreeを
かけたいのですが、方法はあるのでしょうか。
すいません、初歩的なことで。
0408132人目の素数さんNGNG
>>407
すまん。こっちこそ初歩的に間違えた。
CoordinatesFromCartesian[{x, y, z}, Spherical]  {1, HoldForm[Degree] / Degree, HoldForm[Degree] / Degree}

# ラジアンに戻す時は
# x = Coord...<snip>
# ReleaseHold[x]
0409132人目の素数さんNGNG
405
>>408
ありがとうございます。できました。
勉強させていただきます。
0410402NGNG
>>404
ありがとうございました。それで解決いたしました。
そんなことだっとは盲点でした……。
次のような記事も発見しました。
私の場合ここまでする必要はありませんでしたが、参考までに。

『ReadList: Is it really slow?』
ttp://forums.wolfram.com/mathgroup/archive/2000/Jul/msg00264.html
0411411NGNG
Animate[]やFor[]で生成される複数の3Dグラフィックスを
同じ座標内に全て表示するようにしたいんですけど、どうすればいいんでしょうか?
0412132人目の素数さんNGNG
>>411
SelectionAnimate か、
表示されたものをマウスで畳んで、
右クリックしてAnimateみたいなメニューを選ぶ。
0413132人目の素数さんNGNG
馬鹿な質問ですが、
ギリシャ文字はマウスを使ってボックスから選択しないと使えないのでしょうか。
キーボードから入力するショートカットがあれば教えてください。
釣りではないのでよろしく。
0414132人目の素数さんNGNG
>>413
ぜってー釣りだな
0415132人目の素数さんNGNG
>>413
\[CapitalAlpha]
\[Alpha]
<Esc>Alpha<Esc>
<Esc>alpha<Esc>
0416FeaturesOfTheGod ◆UdoWOLrsDM NGNG
Re:>415 何故もっと簡単な方法を教えてやらぬのだ?(私もだ。)
0417411NGNG
>>412
それでShowをつかって複数のグラフィックスを同一座標内に表示したように
グラフィックスを重ねて表示する事ができるんでしょうか?
もうちょっと具体的に教えてくれるとうれしいんですけど・・
0418132人目の素数さんNGNG
絵を描きたいんですが、何かいい物ありませんか?
例えば、ドラえもんとかドラゴンボールとか…
0419FeaturesOfTheGod ◆UdoWOLrsDM NGNG
Re:>418 図形をたくさん組み合わせる。楕円、長方形、線分、その他いろいろある。
0420132人目の素数さんNGNG
>>412
アニメーションがしたいわけではなくて、単に重ねたいのなら
最初からShowか元のPlotなどで重ねろ。
Animatieの出力を利用するのはNotebook操作系の関数を使えば
できないことはないが、二階から目薬。
0421411NGNG
>>420
二回から目薬とは??
どのようなNotebook操作系の関数を利用すればできますか?
0422132人目の素数さんNGNG
有名な諺
0423132人目の素数さんNGNG
224
0424411NGNG
Mathematicaで4次元グラフィックスが比較的簡単に書けるようなパッケージありますか?
0425132人目の素数さんNGNG
{-X*a*(1+X^2)(d+d*X^2+e)}/(b-f+b*X^2)+X*(c-f)+X^3*c+
{(b-f+b*X^2)*e}/{X*(d+d*X^2+e)}==0,X
0426132人目の素数さんNGNG
誰か解いてください。お願いします。
0427132人目の素数さんNGNG
Mathematicaで解いたら?
0428132人目の素数さんNGNG
今、Mathematicaがないから解いてと頼んでいます。
0429132人目の素数さんNGNG
552
0430132人目の素数さんNGNG
ノートブックを編集中のキーバインディングを変える方法
というか割り当ての方法をどなたかご存じないですか?
例えば
コントロール+k
を行末までの文字の削除に当てるとか。
0431132人目の素数さんNGNG
mathematicaはちょっとした計算に向くけど、
なんか大きなことやろうとすれば、matlab 使うなー。

mathematicaは言語の外見が汚なすぎ。
てかセンス悪いよな、Wolframは
0432132人目の素数さんNGNG
mathematica での開発は効率が悪すぎ
0433FeaturesOfTheGod ◆UdoWOLrsDM NGNG
Re:>432
そもそも、mathematicaは研究のためにある。
0434132人目の素数さんNGNG
そもそもFeaturesOfTheGod ◆UdoWOLrsDM は馬鹿にされるためにある。
0435FeaturesOfTheGod ◆UdoWOLrsDM NGNG
Re:>434 馬鹿にされるのはお前だけで十分。
0436132人目の素数さんNGNG
>>431
>mathematicaは言語の外見が汚なすぎ。
>てかセンス悪いよな、Wolframは

そこはかなり同意する
0437132人目の素数さんNGNG
コマンドラインで手軽に計算できるというのと、制御構文使って
ある程度のプログラムを組めるというのを両立させようとするから
ああいうことになるんだよな。
0438132人目の素数さんNGNG
>>437
そうですね。mathematicaは開発者が多いからグラフィックスやGUIだけが
他のソフトより良いだけであって、Wolfram本人もキモいし、言語もキモいし、
やたらプログラミングに時間がかかるだけですね。

もうmathematicaは逝ってよしだと思いました
0439132人目の素数さんNGNG
mathematica使いはWolframのように若ハゲしそうですね。
がんばってください。キモっ!
0440132人目の素数さんNGNG
ところで、「制御構文使って・・・」の言語はいくつも存在しますよ。
Rubyとかは特にね。
matlab言語も(・∀・)イイ!!よ
0441132人目の素数さんNGNG

MATHEMATICA撲滅しよーぜ
0442132人目の素数さんNGNG
























Mathematica氏ね。
0443132人目の素数さんNGNG
987
0444132人目の素数さんNGNG
mathmaticaで例えばSinを変数名として使っちゃた場合とか
どうやったら元の関数として機能してくれるの?
0445FeaturesOfTheGod ◆UdoWOLrsDM NGNG
Re:>444 Sinをどうやって変数名に使うのだ?protected属性を外した?
0446FeaturesOfTheGod ◆UdoWOLrsDM NGNG
Re:>444 protectedじゃなくて、Protectedね。とりあえず、Sin[Pi]などで正常に値が出るなら大丈夫だと思うけど。
0447132人目の素数さんNGNG
>>444
評価の仕組み上無理だったと思います。
どうしてもというなら、Symbol["Sin"]でもどうぞ。
Func[Sin_] := {Sin, Symbol["Sin"][Sin]}
Func[3.0]

# /* Example.c */
# int x = 3
# f(int x) { return x; }
# /* さて、f(3)の返り値は? */

>>446
そういう場合にはちゃんとDefinitionやFullDefinitionを使いましょう。
# 前身時代からなんで知識があるわけでもないのに考えずに適当なこと
# ばかりこたえるかな。
0448132人目の素数さんNGNG
グーグルで検索していてここにたどり着きました。
>>405-408
のプログラムを利用させてもらっています。
これに改良を加え座標を方程式で出してその値を極座標に変換できるように
しようと試みたのですがうまくいきません。
次のようにしてみました。

<< Calculus`VectorAnalysis`

Solve[{x + y + z == 1,
  x - y + z == 3,
x + y - z == 5},
{x, y, z}]

CoordinatesFromCartesian[{x, y, z} /. %, Spherical] {1,
HoldForm[Degree]/Degree, HoldForm[Degree]/Degree}

返数は
CoordinatesFromCartesian[{{4, -1, -2}}, Spherical]
(以下同じような感じで二つ返ってきてしまいます。)
どうもただ式のx, y, zに方程式の解が代入されただけの感じのものです。

どうすれば成功するのでしょうか。アドバイスもらえないでしょうか。
0449132人目の素数さんNGNG
どうも「評価」というのがわからない。
Table[If[PrimeQ[i], i, ""], {i, 2, 100}]
を実行すると、
{2, 3, , 5, , 7, , , }
が返るが、
list = {2};
Do[
If[PrimeQ[i], Append[list, i]],
{i, 3, 100}];
list
とやっても
{2}
となるだけ。
なんでなのでしょうか。
0450132人目の素数さんNGNG
>>448
  CoordinatesFromCartesian[{{4, -1, -2}}, Spherical]
でなくて
  CoordinatesFromCartesian[{4, -1, 2}, Spherical] {1, 
でないといけない。Solveが複数答えを返すこともあるので

ans = Solve[{x^2 + y + z == 1, x^2 - y + z == 3, x^2 + y - z == 5}, {x, y, 
      z}]
Map[CoordinatesFromCartesian[{x, y, z} /. #, Spherical] {1, 
        HoldForm[Degree]/(Pi / 180), HoldForm[Degree]/(Pi / 180)} &, ans]

など。

>>449
list = {2}
Append[list, 3]
list
と入力すると何がおこるでしょう?
0451132人目の素数さんNGNG
>>450
あうう…
「評価」じゃなかったのですね。
思いこみであちこちにEvaluateつけて考えあぐねておりました

Thanks a lot!
0452132人目の素数さんNGNG
見当違いのことをしているのかもしれませんが、教えてください。
Mathematicaでの数値計算の精度は機械精度以上には上げることが出来ないでしょうか。

$MachinePrecision
Out[1]=15.9546

a1=SetPrecision[Sqrt[2-0.1],100];
NumberForm[a1,DigitBlock->10,NumberSeparator-> " " ]

NumberForm=
1.3784048752 0902210683 0047960102 0924746990 2038574218 7500000000 \
0000000000 0000000000 0000000000 000000000

a2=Sqrt[SetPrecision[2.-0.1,100]];
NumberForm[a2,DigitBlock->10,NumberSeparator-> " " ]

//NumberForm=
1.3784048752 0902214457 7973787659 2686126529 8801258806 7606899563 \
5042810459 9163905598 4762095066 7510687484

a1とa2を比較すると、機械精度が保証する桁以下で両者が異なっています。
どちらが正なのでしょうか。SetPrecisionの使い方がまずいのでしょうか。
0453132人目の素数さんNGNG
>>452
Sqrt[2 - 0.1]の結果の数値を精度100桁にするというのと、
(2. - 0.1)の結果の数値を精度100桁としてからSqrtをとるのとは
全く別のことですが。
もちろんどちらもN[Sqrt[2 - 1/10], 100]とは異なりますね。
0454132人目の素数さんNGNG
709
0455132人目の素数さんNGNG
455
0456132人目の素数さんNGNG
>>452
ひょっとして 0.1と1/10が同じと思っていませんか?
■ このスレッドは過去ログ倉庫に格納されています