■掲示板に戻る■ ■過去ログ倉庫一覧■

すぴさんのレポートコピペ用スレ
1すぴ:2009/05/22(金) 15:33:53
Expand[式] 式を展開する

Factor[式] 式を因数分解する


Together[式] 式を通分する

Apart[式]式を部分分数に分解する

Series[f(x),{x,a,n}] 式f(x)をx=aのまわりで(x=a)^nの項まで展開する

Limit[f(x),x->a] 式f(x)の極限を求める

D[]関数の一階編微分をもとめる

Integrate[f(x),x] 関数f(x)の不定積分を求める

Integrate[f(x),{x,a,b}]関数f(x)の定積分をもとめる



Plot[f(x),{x,xmin,xmax},オプション]=関数y=f(x)のグラフを変数xの変域を[xmin,xmax]として描く

ParametoricPlot[{g(t),h(t)},{t,tmin,tmax},オプション]=媒介変数表示をしたとき、x,y座標がそれぞれ関数g(t),h(t)となる曲線を媒介変数tの変域を[tmin,tmax]として描く

AspectRatio Y軸とX軸の長さを決める

PlotLabel グラフのラベルを描く

AxesLabel {"Xラベル","Yラベル"} Xラベル、Yラベルをそれぞれx軸、y軸と描く

Frame true フレームを描く

Plot3D[f(x,y),{x,xmin,xmax},{y,ymin,ymax}オプション] 変数x,yの変域をそれぞれ[xmin,xmax],[ymin,ymax]として、関数z=f(x,y)のグラフを描く
 
parametricPlot3D[]   媒介変数表示をしたとき、xyz座標がそれぞれ関数     となる曲面を媒介変数u,vの変域をそれぞれ[ui,ux],[vi,vx]として描く

PlotRange{zmin,zmax} 指定したzの範囲だけを描画する

BoxLabel{xr,yr,zr} グラフを囲む軸の長さの比を指定する 指定しない場合1:1:0,4に設定される

AxesLabel x軸y軸z軸にラベルを描画する

3supi:2009/07/17(金) 12:52:00
5]でavobe が先に来てしまっているため、aboveが解決されないまま、後ろにonが
 無限に増えていく無限ループが発生してしまっている
\end{verbatim}

\subsection{実習6ー3}
1.
\VerbatimInput[frame=single]{ex63.pl}
\begin{verbatim}
項単独で記述しなければならないことに注意
\end{verbatim}

2.
\VerbatimInput[frame=single]{ex632.pl}

3.
\VerbatimInput[frame=single]{ex633.pl}
4.
\VerbatimInput[frame=single]{ex634.pl}

\section{実習操作2}
\subsection{実習8ー2}
\VerbatimInput[frame=single]{ex82.pl}

\subsection{実習8ー3}
1.
\VerbatimInput[frame=single]{ex831.pl}
2.
\VerbatimInput[frame=single]{ex832.pl}
3.
\VerbatimInput[frame=single]{ex833.pl}

\section{実習操作その3}
\subsection{実習11ー4}
1.\\
on()では表せる関係がひとつずつなので、touch(a,[b,c,d])のように、ひとつの積木に隣り合う積木をリストとして\\
まとめて関連付けできるようなプログラムをつくることが必要\\
2.
\VerbatimInput[frame=single]{ex114.pl}
3.
\begin{verbatim}
[bi0604@eiepc053 ~]$ pl -q -f ex114.pl
?- main.
tsumiki wo nyuuryoku:[a,b,c].
iro wo nyuuryoku:[red,blue,yellow].
a ni hureteiru block:[b,c].
b ni hureteiru block:[c,a].
c ni hureteiru block:[a,b].
tsumiki a no iro: red
tsumiki b no iro: blue
tsumiki c no iro: yellow

tsumiki a no iro: red
tsumiki b no iro: yellow
tsumiki c no iro: blue

tsumiki a no iro: blue
tsumiki b no iro: red
tsumiki c no iro: yellow

tsumiki a no iro: blue
tsumiki b no iro: yellow
tsumiki c no iro: red

tsumiki a no iro: yellow
tsumiki b no iro: red
tsumiki c no iro: blue

tsumiki a no iro: yellow
tsumiki b no iro: blue
tsumiki c no iro: red


No
\end{verbatim}
\end{document}

4supi:2009/07/17(金) 12:52:33
\begin{verbatim}
[解説]
例題とは違い5行目でon()よりもabove()が先なので、トレースを見て分かる通
りaよりもbが先に同一化される。
トレースより、3文目から[5]-[4]-[1]-[2]…の繰り返しになっている。これ以
降繰り返してもXに値するものは出力されない。だから
永久ループになるためにエラーが出力される。
\end{verbatim}

\subsection{6-3}
\subsubsection{6-3-1}
\VerbatimInput[frame=single,label=ex6-3-1]{ex6-3-1.pl}
\textbf{6-3-1の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc060 ~]$ pl -f ex6-3-1.pl
?- parent(X,a).
No

?- parent(X,b).
X = a ;
No

?- parent(X,c).
X = a ;
No

?- parent(X,d).
X = b ;
No

?- parent(X,e).
X = b ;
No

?- parent(X,f).
X = e ;
No

?- parent(X,g).
X = e ;
No
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
事実節ということは項単独で記述しなければならない。これも積木と同じよう
に考える。aはbとcの上に乗っているので、parent(a,b),parent(b,c)と
表せ、bはdとeの上に乗っているので、parent(b,d),parent(b,e)と表せ、
eはfとgの上に乗っているので、parent(e,f),parent(e,g)と表せる。
\end{verbatim}

\subsubsection{6-3-2}
\VerbatimInput[frame=single,label=ex6-3-2]{ex6-3-2.pl}
\textbf{6-3-2の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc060 ~]$ pl -f ex6-3-2.pl
?- child(X,a).
X = b ;
X = c ;
No

?- child(X,b).
X = d ;
X = e ;
No

?- child(X,c).
No

?- child(X,d).
No

?- child(X,e).
X = f ;
X = g ;
No

?- child(X,f).
No

?- child(X,g).
No
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
child(X,Y)は積木での述語under(X,Y)と同じである。「YはXの親ノードであるな
らば、XはYの子ノードである」。だから、child(X,Y) :- parent(Y,X)で
表すことができる。
\end{verbatim}

\subsubsection{6-3-3}
\VerbatimInput[frame=single,label=ex6-3-3]{ex6-3-3.pl}
\textbf{6-3-3の結果}
\begin{quote}
\begin{verbatim}

5supi:2009/07/17(金) 12:54:29
\subsection{6-3}
\subsubsection{6-3-1}
\VerbatimInput[frame=single,label=ex6-3-1]{ex6-3-1.pl}
\textbf{6-3-1の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc060 ~]$ pl -f ex6-3-1.pl
?- parent(X,a).
No

?- parent(X,b).
X = a ;
No

?- parent(X,c).
X = a ;
No

?- parent(X,d).
X = b ;
No

?- parent(X,e).
X = b ;
No

?- parent(X,f).
X = e ;
No

?- parent(X,g).
X = e ;
No
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
事実節ということは項単独で記述しなければならない。これも積木と同じよう
に考える。aはbとcの上に乗っているので、parent(a,b),parent(b,c)と
表せ、bはdとeの上に乗っているので、parent(b,d),parent(b,e)と表せ、
eはfとgの上に乗っているので、parent(e,f),parent(e,g)と表せる。
\end{verbatim}

6supi:2009/07/17(金) 12:55:14
\subsubsection{6-3-2}
\VerbatimInput[frame=single,label=ex6-3-2]{ex6-3-2.pl}
\textbf{6-3-2の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc060 ~]$ pl -f ex6-3-2.pl
?- child(X,a).
X = b ;
X = c ;
No

?- child(X,b).
X = d ;
X = e ;
No

?- child(X,c).
No

?- child(X,d).
No

?- child(X,e).
X = f ;
X = g ;
No

?- child(X,f).
No

?- child(X,g).
No
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
child(X,Y)は積木での述語under(X,Y)と同じである。「YはXの親ノードであるな
らば、XはYの子ノードである」。だから、child(X,Y) :- parent(Y,X)で
表すことができる。
\end{verbatim}

\subsubsection{6-3-3}
\VerbatimInput[frame=single,label=ex6-3-3]{ex6-3-3.pl}
\textbf{6-3-3の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc060 ~]$ pl -f ex6-3-3.pl
?- ancestor(a,Y).
Y = b ;
Y = c ;
Y = d ;
Y = e ;
Y = f ;
Y = g ;
No

?- ancestor(b,Y).
Y = d ;
Y = e ;
Y = f ;
Y = g ;
No

?- ancestor(c,Y).
No

?- ancestor(d,Y).
No

?- ancestor(e,Y).
Y = f ;
Y = g ;
No

?- ancestor(f,Y).
No

?- ancestor(g,Y).
No
\end{verbatim}
\end{quote}

\begin{verbatim}
[

7supi:2009/07/17(金) 12:55:45
解説]
ancestor(X,Y)の考え方は、積木での述語above(X,Y)と同じである。
まず、「XがYの親ノードであるとき、XはYの子孫であるといえる」。だから、
ancestor(X,Y) :- parent(X,Y).と定義する。
今のはparent(a,b)のようにノードが隣接した場合を考えたが、次は
parent(a,e)のようにノードが隣接していない場合を考える。初めに
ancestor(b,f)を考える。「ancestor(b,f)はparent(b,e)かつparent(e,f)
でなければならない」。このときのparent(e,f)は最初に述べた、「XがY
の親ノードであるとき、XはYの子孫であるといえる」に当てはまるので、
ancestor(e,f)=parent(e,f)と述語ancestor()にすることができる。こ
れを先程の条件に置き換えると、「ancestor(b,f)はparent(b,e)かつ
ancestor(e,f)でなければならない」となる。その条件式をX,Y,Zで表せ
ば、「ancestor(X,Y)はparent(X,Z)かつancestor(Z,Y)でなければなら
ない」となり、この条件式はancestor(a,f)やancestor(a,f)など全ての
値を満たすこと分かる。これを規則節で表せば、ancestor :-
parent(X,Z),ancestor(Z,Y).と定義する。
以上の定義した2文をparent()述語に加えることにより、述語ancestor(X,Y)が
完成する。

8supi:2009/07/17(金) 12:56:33
\subsubsection{6-3-4}
\VerbatimInput[frame=single,label=ex6-3-4]{ex6-3-4.pl}
\textbf{6-3-4の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc057 ~]$ pl -f ex6-3-4.pl
?- relatives(X,b).
X = c ;
X = d ;
X = e ;
X = f ;
X = g ;
No

?- relatives(X,c).
X = b ;
X = d ;
X = e ;
X = f ;
X = g ;
No

?- relatives(X,a).
No
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
共通の祖先を持たないノードはaのみである。a以外ならば、全てに同一化可能
であればいい。これは述語ancestor(X,Y)とほぼ同じである。だから
ancestor(X,Y)の述語をそのまま流用する。
ancestor()と違う部分は共通の子孫を持つので、(b,c)や(d,e)や(f,g)
も同一化可能にするところである。
relatives(b,c)の場合を考える。「relatives(b,c)はancestor(a,b)かつ
ancestor(a,c)でなければならない」という条件式が成り立つ。これを
X,Y,Zで表せば、「relatives(X,Y) :- ancestor(Z,X),ancestor(Z,Y)」
と書くことができる。しかし、このときrelatives(b,b)や
relatives(c,c)が成り立ってしまう。これを阻止するためにXとYは等し
くないという条件式「X\==Y」を、先程の規則節に追加する。
以上の定義した文を書くことで、relatives(X,Y)の述語が完成する。
\end{verbatim}

\section{実習8}
\subsection{8-2}
\VerbatimInput[frame=single,label=ex8-2]{ex8-2.pl}
\textbf{8-2の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc057 ~]$ pl -f ex8-2.pl
?- content([a],X).
X = a
Yes

?- content([[[[b]]]],X).
X = b
Yes

?- content([[[c]]],X).
X = c ;
No
\end{verbatim}
\end{quote}

9supi:2009/07/17(金) 12:57:03
\begin{verbatim}
[解説]
一つの項のアトムを出力するためには、述語atom()を用いる。atom()は文字定数
のときのみ、同一化される述語である。なので、[]で囲まれた文字定数
は同一化されない。ここでカットを用いればいい。content(L,X) :-
atom(L),!,X=L.となる。atom()が同一化された場合のみ、XをLに同一化
させることでアトムのみの出力にすることができる。
次に文字定数を囲む[]を同一化させる文を考える。このとき[]で囲まれたアト
ムLと、あらかじめ[]で囲んだYとを同一化させれば[]を消滅させること
ができる。あとは同一化された場合のみLをYとして述語content()に格
納できるようにカットを追加する。content(L,X) :-
L=[Y],!,content(Y,X).となる。これで、いくら[]を重ねていてもアト
ムのみを取り出すことができる。
以上の定義した2文を書くことで、content()述語が完成する。
\end{verbatim}

\subsection{8-3}
\subsubsection{8-3-1}
\VerbatimInput[frame=single,label=ex8-3-1]{ex8-3-1.pl}
\textbf{8-3-1の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc057 ~]$ pl -f ex8-3-1.pl
?- five_card([1,2,3,4,5]).
No

?- five_card([1]).
Yes

?- five_card([1,1,1,1,1]).
Yes
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
まずはリストの要素がひとつのとき同一化させるための初期条件
「five_card([_]).」を定義する。
次にリストの要素が等しいか確かめるには、リスト処理によりカーとクダーに
分けて、述語member()を用いる。member()によって同じ要素がある場合
には、クダーをfive_card()のリストとして繰り越す。同じ要素がない
場合には、カットによりクダーを繰り越さず同一化不可になる。定義は
「five_card(L) :- L=[L1|L2],member(L1,L2),!,five_card(L2)」とな
る。
以上の定義した2文を書くことで、述語five_card()が完成する。
\end{verbatim}

\subsubsection{8-3-2}
\VerbatimInput[frame=single,label=ex8-3-2]{ex8-3-2.pl}
\textbf{8-3-2の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc057 ~]$ pl -f ex8-3-2.pl
?- no_pair([1,2,3,4,5]).
Yes

?- no_pair([3,3,4,4,5]).
No

?- no_pair([5]).
Yes
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
入力されたリストの要素が互いに異なるか判別するならば、例題7.11で作成し
たnomember(X,L)の述語を用いる。nomember(X,L)はXがリストLの要素で
ないときYes、XがリストLの要素であるときNoとなる述語である。
後は8-3-1と同じように定義すれば良い。まず、リストの要素が一つのとき同一化させるための初期条
件「no_pair([_])」を定義。次にリストLをリスト処理によりカーとク
ダーに分けて、述語nomember(X,L)に当てはめる。このとき
nomember(X,L)に同一化できた場合には、クダーをno_pairのリストとし
て繰り越す。同一化できなかった場合には、クダーを繰り越さず同一不
可になる。定義は「no_pair(L) :-
L=[L1|L2],nomember(L1,L2),!,no_pair(L2)」となる。
以上の定義した4文を書くことで、述語no_pair(L)が完成する。
\end{verbatim}

10supi:2009/07/17(金) 12:57:35

\subsubsection{8-3-3}
\VerbatimInput[frame=single,label=ex8-3-3]{ex8-3-3.pl}
\textbf{8-3-3の結果}
\begin{quote}
\begin{verbatim}
[bi0619@eiepc057 ~]$ pl -f ex8-3-3.pl
?- one_pair([1,2,3,4,5]).
No

?- one_pair([5,2,3,4,5]).
Yes

?- one_pair([5,5,5,4,5]).
No
\end{verbatim}
\end{quote}

\begin{verbatim}
[解説]
リストLの内2つだけ同じ数字のとき同一化するということは、2つ以外は全て異
なるということである。つまり、8-3-2の述語no_pair(L)を用いるとい
うことが分かる。
まずはリスト処理によりリストLに要素Xが含まれる場合を考える。述語
member(X,L)により同じリストに同じ数字がある場合には、クダーのリ
ストを述語no_pair(L)に同一化する。後は、述語no_pair(L)よりリスト
の数字が全て異なればYes、同じ要素が一つ以上あればNoになる。定義
は「one_pair(L) :- L=[X|L1],member(X,L1),!,no_pair(L1)」となる。
つぎにリスト処理によりリストLに要素Xが含まれない場合を考える。述語
nomember(X,L)より同じリストに異なる数字がある場合には、クダーの
リストをone_pair(L)に繰り越す。これにより同じ要素があるまで、こ
れを繰り返す。定義は「one_pair(L) :-
L=[X|L1],nomember(X,L1),!,one_pair(L1)」となる。
以上の定義した文を書くことで、述語one_pair(L)が完成する。
\end{verbatim}

\section{実習11}
\subsection{11-4}
\subsubsection{11-4-1}
\begin{verbatim}
make_on(L)とほぼ同じである。まず、最初に入力されるリストとは別に、新た
に「この積木をどの積木を隣接させるか」を入力させる。次に初めに入
力したリストのカーXと、次に入力した隣接した積木リストTを
make_touch2(X,T)として同一化させる。次に、make_on(L)と
同じように、隣接した積木リストをリスト処理して述語
assert()により述語touch(X,Y)を事実節として全て定義する。
そして、最初に入力したリストのクダーを要素がなくなるまで
繰り返す。これで完成するはずである。
\end{verbatim}

11すぴ:2009/07/17(金) 15:55:47
5]でavobe が先に来てしまっているため、aboveが解決されないまま、後ろにonが
 無限に増えていく無限ループが発生してしまっている
\end{verbatim}

\subsection{実習6ー3}
1.
\VerbatimInput[frame=single]{ex63.pl}
\begin{verbatim}
項単独で記述しなければならないことに注意
\end{verbatim}

2.
\VerbatimInput[frame=single]{ex632.pl}

\begin{verbatim}
childは積み木での述語underと一緒と同じく考えた
よってchild(X,Y):-parent(Y,X)で表せる
\end{verbatim}


3.
\VerbatimInput[frame=single]{ex633.pl}

ancestorは積木でのaboveと同じく考えた


4.
\VerbatimInput[frame=single]{ex634.pl}

共通の枝を持たないノードはaのみなのでa以外ならば全て同一化であればいい
このことから、述語ancestor(X,Y)とほぼ同じと考えた

ancestor()と違う部分は(b,c)や(d,e)や(f,g)も同一化可能な点

12名無し☆自演乙☆雄一郎:2009/08/26(水) 20:39:12
.   iニニニi
  /  ./ヽ_
/|農||/
 ̄ ̄ ̄ ̄ ̄
   iニニニi
  /  ./ヽ
  |農||_
/|協||/
 ̄ ̄ ̄ ̄ ̄
   iニニニi
  /  ./ヽ
  |農||
  |協||
/|牛||/
 ̄ ̄ ̄ ̄ ̄
   iニニニi
  /  ./ヽ
  |農||
  |協||
  |牛||_
/|乳||/
 ̄ ̄ ̄ ̄ ̄

13うるしばら氏を称える名無し:2010/02/05(金) 23:26:13
すぴー!俺だー!スレを立ててくれー!

14うるしばら氏を称える名無し:2010/02/05(金) 23:28:09
終了前に気づけー!

15すぴ:2010/02/05(金) 23:30:37
やだスレおわってたすいませんでした・・・
またあしたね!!勝手に立ててもいいんじゃよ!いいんじゃよ!

16うるしばら氏を称える名無し:2010/02/05(金) 23:32:04
>>15
これは乙じゃなくて乙なんだからね!乙

■掲示板に戻る■ ■過去ログ倉庫一覧■