回答受付終了まであと6日 回答を投稿すると知恵コイン15枚が追加されます
学校のhaskelの授業の課題なのですが本当によくわかりません。なので回答をお願い...
2017/8/109:59:35
学校のhaskelの授業の課題なのですが本当によくわかりません。なので回答をお願いしたいです。
(1) 四元数とは複素数を拡張したもので 3 つの虚数単位 i,j, k を用いて a +
bi + cj + dk(a, b, c, d は実数)の形に表
せる数である。通常の実数の四則演算に加え
て i
2 = j
2 = k
2 = −1 と ij = k,jk = i, ki = j,ji = −k, kj = −i, ik = −j という規則と
1
分配法則,結合法則などによって計算され,積の交換法則を必ずしも満たさないとい
う特徴がある。
四元数 a + bi + cj + dk を (Quat a b c d) の形に表す新しいデータ型
data Quaternion = Quat Float Float Float Float
を定義して,その加減乗除を行う関数 addQ,subQ,mulQ,divQ を定義せよ。
(2) リスト内の全要素を 2 分探索木 (pp.139–142) にいったん登録し,その中
のデータを左から順に取り出して並べていくことでソートができる。この方針でリス
トのソートを行う関数 treeSort を定義せよ(リスト内に同じデータが複数ある場合,
ソートした結果,それらは 1 つにまとめてもよいし,そのまま複数個残ってもいい)。
(3) 3 次元実ベクトルを 3 つの浮動小数点数を用いて (Vec3D x y z) の形に表
す新しいデータ型
Vec3D = Vec3D Float Float Float
を定義して,その和,スカラー倍,内積を計算する関数
add3D :: Vec3D -> Vec3D -> Vec3D
scalarProduct :: Float -> Vec3D -> Vec3D
innerProduct :: Vec3D -> Vec3D -> Float
を定義せよ。また 2 つの 3 次元実ベクトル a, b を受け取り最初のベクトル a に対し
て,第 2 のベクトル b を a に平行な成分 b0 と垂直な成分 b1 に分解する(すなわち
b = b0 + b1,b0 ∥ a,b1⊥a となる)関数
decompose :: Vec3D -> Vec3D -> (Vec3D, Vec3D)
を作れ。
(4) ペアノ算術を一部 Haskell で実現してみよう。型 Peano を
data Peano = Zero | Suc Peano deriving (Show, Read, Eq, Ord)
で定義する。非負整数 n を Suc(· · ·(Suc
| {z }
n
Zero)· · ·) で(ペアノの数と呼ぶ)表現しよ
うという意図である。ペアノの数を通常の非負整数に変換する関数とその逆変換を行
う関数
peano2int :: Peano -> Integer
int2peano :: Integer -> Peano
を定義せよ。 また(ほかの型に変換することなくそのままで)ペアノの数同士の足
し算を行う関数とペアノ数を 3 で割った余りを返す関数
addPeano :: Peano -> Peano -> Peano
mod3Peano :: Peano -> Peano
を定義せよ。たとえば
addPeano (Suc (Suc Zero)) (Suc Zero) =⇒ Suc (Suc (Suc Zero))
mod3Peano (addPeano (Suc (Suc Zero)) (int2peano 5)) =⇒ Suc Zero
となればよい。
補足1問だけでもお願いします!
回答投稿
- Yahoo!検索で調べてみよう
「Vec3D、Suc Zero」に関する回答受付中の質問
このカテゴリの回答受付中の質問
注目の回答受付中の質問
初めてのいろいろ、心配がいっぱい
回答受付中の質問
カテゴリQ&Aランキング
- 戻る
- 次へ
総合Q&Aランキング
家族がテレビに翻弄(ほんろう)されています
みんなのアンテナ
Yahoo!知恵袋カテゴリ
お客様自身の責任と判断で、ご利用ください。