0

ここで質問する前に、私が Maple 7 を使用していることを皆さんに知ってもらいたいと思います (Maple の新しいバージョンでは、この問題は既に解決されている可能性があります)。私が Maple で抱えている一般的な問題は、ワークシートを読み込んだ場合、作業を続行するためにすべてを再実行する必要があることです (少なくとも、これが Maple での作業を学んだ方法です)。「問題」は、中間のシンボリック計算の一部に時間がかかる可能性があることです。結果の方程式をワークシートに保存して、ロードすると結果が既に存在し、必要ありません。シンボリック計算をやり直してください。Maple 7 で見つけた 1 つの方法は、次のような保存コマンドを使用することです。

save var1, var2, "temp.m"

save temp.m残念ながら、Maple 7 はすべての変数を保存する方法をサポートしていません。その意味で、maple ワークシートは matlab とまったく同じではありません (一度 matlab ワークシートをロードすると、計算されたすべての変数が既にワークシートにあり、そこから作業を開始できるためです)。私のやり方は原始的すぎるかもしれません (「保存」コマンドを使用して計算結果を保存し、ワークシート全体を実行する代わりに毎回それらをロードすることにより)、誰かがこの問題に対処するよりクリーンな方法を持っているなら、私はすべて耳を傾けます :)これも maple 7 のもう 1 つの問題です。hte save コマンドを使用してベクトル v を保存すると、ベクトル値が常に保存されるわけではありません。別のワークシートから「変数ファイル」をロードすると、 v[1] はもうありません。v[1]、v[2].. などは、f1.. という手続きによって計算されるので、

v[1] := f1(..some parameters...)

プロシージャ f1 はout;その最後の行にあります (out関数内で計算されたベクトルまたは変数です。最後に f1 にこれを返してもらいたいので、out; を持っています)。print(v);変数 v を読み込んだ後に書くと、次のようなものしか得られません。

[out, out, out, out]

しかしprint(v)、元のワークシートにいる場合 (ワークシート全体を実行した後)、正しいベクトルが得られます。だから私はここで混乱していて、誰かが何が起こっているのか知っているのではないかと思った. これはベクトルでのみ発生します。変数でこれを行うと、この問題は発生しません。なので今のところベクトルのエントリを一つずつ保存しようと考えているのですが、これは面倒で汚いです。もっと明るいアイデアを持っている人はいますか?

ホセ

4

2 に答える 2

0

「out」の問題は、テーブルまたはプロシージャに割り当てられた名前が評価されないままになることです。「out」を返すプロシージャでは、代わりに「eval(out,1)」を返す必要があります。現時点では、プロシージャはテーブルを保持する「out」という名前を返しています。テーブルを直接返す必要があります。

于 2013-09-03T06:56:14.993 に答える
0

わかりました..私の問題の1つに対する回避策を見つけたと思います! Maple 7 の手順には何か異常があります。私のベクトルの値は別の変数 (out) を参照しています。これは、プロシージャで値を返し (out 変数が呼び出されている)、maple がこの値を参照しているためだと推測しました。プロシージャを書き直して、値を明示的に返さないようにしましたが、変数参照を操作してプロシージャ パラメータの値を変更しました。これで、save コマンドを使用すると、計算された値が実際に保存されます。この問題が Maple の新しいバージョンにも存在するかどうかはわかりません。

于 2013-09-02T11:39:01.817 に答える