• 締切済み

【Mathematica】 Protectされているとは・・・?

Mathematica初心者です。 変数を使っているときに、 よく下のようなエラーが出てしまいます。 「Set::Write : Tag Times in ○○ is Protected.」 よく分からないまま、 Unprotect[○○]; として回避しているのですが、 変数や配列を定義するたびに、 Unprotectを使わなければならなくなってしまっています。 いったいProtectとは何なんでしょうか? ちなみに、○○の中は、いわゆる予約語ではなく、適当な文字です。 特にプログラムに(2次元の)リストを使っているときに起こります。 どなたかお分かりになる方、教えてください。

みんなの回答

回答No.1

Mathematicaを使ったことがないので 内容は理解できません(汗 http://support.wolfram.com/mathematica/packages/loading/tagprotectederror.ja.html

hibiki_pt
質問者

お礼

ありがとうございます。 このページは私も見ていたのですが、パッケージというものが、よく理解できませんでした。 私の場合、単なる変数として使っているはずなので、なぜエラーが出るのか分からない状況です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • (mathematica)Tableで配列された変数の一括定義

    例えば、手打ちで {a[1],a[2],a[3]}={1,2,3} ------(1) とした場合はa[1],a[2],a[3]それぞれに1,2,3が割り当てられますが、これをTableコマンドを使って Table[a[i],{i,3}]={1,2,3} としてもa[1],a[2],a[3]には何も割り当てられません。Tableコマンドを使って、(1)と同じように配列内の変数を一括に定義できる操作がわからなくて困っています。mathematicaに詳しい方ご存知でしたらぜひ教えてください! ちなみに私はmathematicaのver6を使っています。

  • 【Perl】サブルーチンから多次元配列を戻したい

    【Perl】サブルーチンから多次元配列を戻したい サブルーチン内で作った2次元配列と1つの変数(例:@listと$i)をリターンしたいのですが、どのようにすれば良いでしょうか? ↓サブルーチン(calc) return (@list, $i); ↓メイン my $a = 12; my (@list, $i) = &calc($a); 間違っていると思いますが、現時点でのプログラムを一部書きました。 ご回答よろしくお願いします!

    • ベストアンサー
    • Perl
  • Mathematicaの問題について

    Mathematicaという数式処理システムについて、授業ではほとんど教わっておらず、説明なども飛ばし飛ばしで、一体何をやっているのだか、言っているのだか全く分からないまま課題が出されて、何をどうしてよいのか分からず、手が出ない状況で困っています。課題の内容を載せますので、どなたか解答を教えていただきたいです。出来れば何をどうしているのかも教えて頂けたら嬉しいのですが、解答だけでも十分ありがたいので、長くなってしまいますが、どうかよろしくお願いします。 1.分散を計算する以下の関数には、誤りがある。誤りを 指摘し、正しく動くよう修正しなさい。 myVariance[ arg1 ] : = ( xbar = Mean[arg1] ; temp1 = Table[ {i, 1, Length[arg1]}, (arg1[[i]] – xbar)^2]; N[ Apply[Plus, temp1] / Length[arg1] ] ) 2.正規分布の確率密度関数を描く関数grNormal を以下に 定義する。 (1)と(2)を埋めて関数を完成させなさい。 関数の入力引数は、平均mu, 標準偏差sigma, グラフを描く範囲(-xrange~xrange)の3つとする。 grNormal[mu_, sigma_, xrange_] := (1) __[{ndist, pdfunc, ymin=-0.01, ymax=0.43},  (2) _________; pdfunc = PDF[ndist, x]; Plot[pdfunc,{x, -xrange, xrange}, Frame->True,PlotRange->{{-xrange, xrange}, {ymin, ymax}}] ] 3.複合式を用いて平均を求める関数を以下に定義する。 (1) と(2)を埋めて関数を完成させなさい myMean[(1) __] := (data1 = Apply[Plus, arg1]; data2 = Length[arg1]; average = (2) __) 4.data1 は,10 人の学生の統計学試験の点数とその度数をリストで示したも のである.このデータからMathematica を用いて統計学試験の分散を求める関 数を2 通りの方法により以下に作成した.(1)と(2)の下線を埋めて完成させなさ い. また,それぞれがどのような方法か説明しなさい 【手法1】 data1 = List[40, 40, 40, 50, 50, 50, 50] myVari[arg1_] := (xbar = Mean[arg1]; temp1 = Table[(arg1[[i]]-xbar)^2,{i,1,Length[arg1]}]; (1) _____) Vari = myVari[data1] 【手法2】 data1 = List[40, 40, 40, 50, 50, 50, 50] myVari[arg1_] := (xbar = Mean[arg1]; temp1 = Table[(arg1[[i]])^2,{i,1,Length[arg1]}]; (2) _____) Vari = myVari[data1] 5.data1 は,10 人の学生の統計学試験の点数とその度数をリストで示した ものである.このデータからMathematica を用いて統計学試験の分散を 求める関数を以下に作成した.誤りを指摘し,正しく動作するよう修正 しなさい. data1 = List[40, 40, 40, 50, 50, 50, 50, 60, 70, 80] myVari[arg1] := (xbar = Mean[arg1]; temp1 = Table[(arg1[[i]]-xbar),{i,1,Length[arg1]}]; N[Apply[Plus, temp1] – xbar^2]) Vari = myVari[data1] 6.data1 は10 名の学生の右握力と球投げの結果を2 次元のリストで示したものである. このデータからMathematica を用いて共分散を求める関数を以下に作成した.下線 (1) と(2) を埋めて完成させなさい.なお,  myC の第1引数には右握力(grip),   第2 引数には砲丸投げ(shot) の値を与えるものとする. data = List[{26,16},{26,11},{26,14},{27,16},{28,18}, {29,16},{32,18},{29,21},{24,14},{26,19}] <<Statistics’MultiDescriptiveStatistics’ TableForm[data1] grip = Table[data3[[i,1]],{i,1,10}] shot = Table[data3[[i,2]],{i,1,10}] myC[arg1_,arg2_] := (xbar = Mean[arg1]; ybar = Mean[arg2]; temp1= (1)______________________________________________; (2)____________________________________________________) myCorrelation = myC[grip,shot]

  • サイズのわからない配列

    お世話になっております。 最初からサイズの不明な配列を扱いたいときに、いろいろ調べたら 配列が1次元の場合、次のような方法で扱えることがわかりました。 dim userlist as new list(of string) 'List dim user as string() '配列 userlist.add("taro") userlist.add("hanako") user = userlist.toarray 'Listを配列に変換 debug.print(user.length) '配列のサイズを求める ところが、配列が2次元の場合、Listは使えないようなのです。 UserID password ------+--------- taro abc hanako xyz こんな感じの2次元データを最初から配列の大きさを定義すること なく利用したいのですが、何か良い方法がございましたら、ご教授 のほどお願いいたします。

  • Excel VBA でリストボックスへ行追加について

    お世話になります。 ExcelVBAで、ユーザフォーム表示のときに、リストボックスにデータを追加します。 その際、追加したいアイテムが項目数3の配列なのです。 配列もユーザ定義した配列(2次元配列)を使っています。 配列を作って、.List=Array でセットしようと思ったのですが、コンパイルエラーが出ます。 どうしたらよいでしょうか。 説明がわかりにくいかもしれませんが、よろしくお願い致します。

  • C言語、配列の積

    整数型二次元配列x,yに適当な値をキーボードから入力し、次にそれらの行列の積を計算して二次元配列zに代入し、行列x,y,zの要素を出力せよ。但し、配列の大きさは最初にキーボードから入力しておき、変数宣言においては、配列の大きさを大きめに宣言しておき、キーボードから入力する配列の大きさはその範囲内で入力するようにせよ。 という問題です。よろしくお願いいたします

  • ユーザーフォームのリストボックスの設定を標準モジュール内で取得した配列

    ユーザーフォームのリストボックスの設定を標準モジュール内で取得した配列にしたい。 題名のままの説明ですが、ユーザーフォームのリストボックス値を配列にして動的に動作させるようにしたいのですが、標準モジュールでPublicで配列を宣言しているのですが、うまくユーザーフォームモジュールに渡っていないというか、その配列変数をユーザーフォームモジュール内に書くと配列が存在しません。 というエラーが出てしまいます。 かといってユーザーフォームでPublicで配列を宣言することもできないのでどうやってリストボックスに 配列を設定すればいいのかわかりません。 配列は2次元配列で視覚的に説明するとは列数が3行、行数は標準モジュール内でRedimにより可変します。この配列をそのままレコードセットみたいにリストボックスに設定したのですが、 なにか良い方法はありますでしょうか?

  • C#イベントで作る変数の受け渡し

    c#初心者なので、教えて下さい。  Windowsのフォームアプリケーションです。例えば、あるボタンのクリックイベントにファイルをよむを登録する、とします。この場合はイベントで定義した文字列の配列だとします。そこへ読み込みます。  この配列を使って、加工を行う場合は、ローカルな変数になるので、そのイベントが終了してしまえば、配列は存在しないと思います。  C#ではグローバル変数という物はないそうです。擬似的に作ることは出来るようですが、普通の場合はどうすれば、これを回避できますか?  擬似的グローバル変数を作ったとしても、修飾が付いて見にくいし、ローカルで動的に確保した配列は、大きさが変わるので、呼ぶ側の方で確保しようにも、大体の大きさぐらいで、正確に確保できないように思います。  どうしたらスマートに解決できますか?

  • fortran allocateを使って配列宣言を

    今変数 aについて考えています.aは i,jの2次元の座標におけるデータです. a(1,1)は10個配列を持ちたい a(1,2)は5配列を持ちたい a(i,j)はn個配列を持ちたい このような場合どのように配列を定義すれば良いのでしょうか? 例えば 2次元の大きさが3x3の場合で,それぞれの位置に配列したいデータ個数をnとします. nには既に個数が定義されているとします.このとき aの配列は nを使ってどのように定義すれば良いのでしょうか? integer n(3,3) integer i,j real, allocatable :: a(:,:,:) do j=1,3 do i=1,3 n(i,j)=i*j end do end do do j=1,3 do i=1,3 allocate (a(n(i,j),3,3)) end do end do では aの宣言が重複するためエラーになってします. 何方か良い方法を教えて下さい.

  • 多次元配列の2つ目の項目でソートするには?

    今、とあるデータを csv と同じ形式で多次元配列にセットしています。 この多次元配列を for 文を使って TABLE タグを出力させて一覧表示しています。 データ部は数値順です。 function ListOut(){  var data = [   ["0x0140","CB_GETEDITSEL","エディット領域の選択範囲の取得",…], ←データは9項目ある(長いので省略)    :   ["0x0161","CB_INITSTORAGE","リストボックスのメモリ初期化",…],   [0,0,0,0,0,0,0,0,0], ←データの最後を表す  ];    for ( var i=0 ; table[i][0] != 0 ; i++ ){   ListOutSub( table, i ); ←ここで1データを TABLE 出力  } } 質問1:  『data』リストの2つ目の要素でアルファベット順にソートする方法が分かりません?  ソート方法が分かれば数値順以外にもアルファベット順で ListOutSub 関数などで一覧表示できる  と思っています。→データをアルファベット順にソートして定義するのは量からして避けたいです。  『sort』を使えば出来そうですが、第1引数に何を、どのように指定するのかが分かりません。  ※『ListOutSub』は自作関数で多次元配列の1データを TABLE タグで出力させるものです。 質問2:  データの最後を[0,0,…,0]として終わりを判定していますが、何かよい方法ありますか?  『table.length』を使ってみましたが上手く出来ませんでした。→『i < table.length』  多次元配列の場合では『length』は使えないのでしょうか?  指定方法が間違っているのならば正しい方法を教えて下さい。 上記の2つがわかる方、どうか教えてくれませんか? ちなみに JavaScrpit は今年始めたばかりの初心者です。→参考までに C/C++ 言語歴は14年 宜しくお願いします。→回答へのお礼は夕方以降になります。