2017-04-05 35 views
0

は、私は次の式があると評価しません:私は声明%i1 is O(%i2)が真作るために選ぶことができるものを一定の値を知りたいので、私は評価し、今値に置き換え変数が、

(%i1) (8*x)*(log(x)/log(10)); 

(%i2) X^2; 

をそれらそうのようなループで:

for a:1 thru 10 do print(%i1, "=", ev(%i1, x=a), %i2, "=", ev(%i2, numer, x=a)); 

出力は次のようになります。

8 x log(x)   2 
---------- = 0.0 , x = 1 
log(10) 

8 x log(x)      2 
---------- = 4.816479930623698 , x = 4 
log(10) 

8 x log(x)      2 
---------- = 11.45091011327189 , x = 9 
log(10) 

8 x log(x)      2 
---------- = 19.26591972249479 , x = 16 
log(10) 

8 x log(x)      2 
---------- = 27.95880017344075 , x = 25 
log(10) 

8 x log(x)      2 
---------- = 37.35126001841489 , x = 36 
log(10) 

8 x log(x)      2 
---------- = 47.32549024079837 , x = 49 
log(10) 

8 x log(x)      2 
---------- = 57.79775916748438 , x = 64 
log(10) 

8 x log(x)      2 
---------- = 68.70546067963139 , x = 81 
log(10) 

8 x log(x)   2 
---------- = 80.0 , x = 100 
log(10) 

私はワン眼球への出力を容易にするために、tは、のようなもの:

8 1 log(1)   2 
---------- = 0.0 , 1 = 1 
log(10) 

8 2 log(2)      2 
---------- = 4.816479930623698 , 2 = 4 
log(10) 

8 3 log(3)      2 
---------- = 11.45091011327189 , 3 = 9 
log(10) 

[snip] 

8 10 log(10)   2 
---------- = 80.0 , 10 = 100 
log(10) 

は、どのように私は式を評価せずに、ループの反復ごとにxためaの値を代入するマキシマを伝えることができますか?

私はマニュアルを検索しましたが、一見関連性のあるものは見つかりませんでした。

答えて

1

操作の多くマキシマでは、「単純な」という表現を作るためにアイデンティティを適用することを意味する、「簡素化」と呼ばれるプロセスによって行われています。例えば。 1 + 1は2に単純化し、0に単純化するとsin(0)などになります。

あなたが望む効果を得るには、単純化を無効にする必要があります。しかし、数値を得るためには、それらの結果だけを単純化する必要があります。

ここにそのことがあります。私はfor x in [1, 2, 3, 4, 5] ...代わりのfor x:1 thru 5 ...を書いた

(%i16) simp : false $ 
(%i17) for x in [1,2,3,4,5] 
     do print (ev(%i1) = ev(%i1, simp, numer), ev(%i2) = ev(%i2, simp)); 
     log(1)   2 
(8 1) (-------) = 0.0 1 = 1 
     log(10) 
     log(2)      2 
(8 2) (-------) = 4.816479930623698 2 = 4 
     log(10) 
     log(3)      2 
(8 3) (-------) = 11.4509101132719 3 = 9 
     log(10) 
     log(4)      2 
(8 4) (-------) = 19.26591972249479 4 = 16 
     log(10) 
     log(5)      2 
(8 5) (-------) = 27.95880017344075 5 = 25 
     log(10) 
(%o17)        done 

注意。後者は単純化が必要な算術演算を使用するためです。両方の方法で試してみてください。私はあなたがその違いを見ると思うし、それは非常に啓発的なものだと私は信じています。

注記私は同じ値の%i1%i2を使用しました。

1

使用「空」の機能:

(%i1) display2d: false $ 
(%i2) prefix("") $ 
(%i3) almost_subst(a, x, e):= subst(""(a), x, e) $ 
(%i4) almost_subst(10, x, 8*x*log(x)/log(10)); 
(%o4) (8* 10*log(10))/log(10) 
関連する問題