2017-12-25 8 views
0

私はMapleが新しく、いくつかの共通部分を持つ関数についていくつかの計算をしたいと思います。問題は共通部分を頻繁に変更しなければならず、手作業でコピーと貼り付けをしたくないということです。mapleの手続き変数に式変数を割り当てる方法は?

私はこのコードを書いていますが、動作しません。

u := a*x^2+b*y^2+c*x: 
f1 := proc (x, y) options operator, arrow; u+5*x end proc 
f2 := proc (x, y) options operator, arrow; u+10*x end proc; 
f3 := proc (x, y) options operator, arrow; u+20*x end proc; 
diff(f1, x)+2*(diff(f2, x))+diff(f3, x) 

結果は私のミスは0です。

のですか? 私は何ができますか? ご協力いただきありがとうございます。

答えて

0

問題は、f1、f2、およびf3は演算子(関数)であり、数式(式)ではないということです。ここにはいくつかの解決策があります。

まず、数式で演算子を置き換える:

f1 := u + 5*x: 
f2 := u + 10*x: 
f3 := u+20*x: 
diff(f1, x)+2*(diff(f2, x))+diff(f3, x); 
         8 a x + 4 c + 45 

2番目のオプションを、演算子を適用します。実際に使用されていない

diff(f1(x,y), x)+2*(diff(f2(x,y), x))+diff(f3(x,y), x); 
         8 a x + 4 c + 45 

yこと。 2つ目は、uを変更して再評価することが、おそらく望むように機能するという利点があります。

+0

これは積分を計算するコードです u(x、y)は前回の計算のxとyの関数ですが、f1に割り当てることはできません 私は何ができますか? 'g1:=行列(1,100); f1:=(x、y) - >: k:= 0; iが-1から.2から.8までの場合jは-1から.2から.8までですdo k:= k + 1; (j + j + 2)*(1/2))*(i-i + 0.2)*(j- j + .2)最後に終了するdo; %; u4:= 0; i = 100の場合s1:= g1 [1、i]; u4:= s1 + u4 end do; –

+0

残念ながら、私は本当にあなたが何をしようとしているのか理解していません。余計なこととして、2番目のループは 'add'の呼び出しで置き換えることができます – DrC

関連する問題