--.--
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

09.14
Fri
大学の後期授業始まりましたけど、カリキュラム作り間違えた感がすごい....疲れそう

まぁいいや

超簡単な記号微分てきなてきなてきな...のを

もう全体てきにかなり適当であれなんですけど

これからちょこちょこいじって改良してみますかねぇ


(defun isin (lst factor)
	(if (null lst)
		0
      	(progn
			(if (listp (car lst))
	    		(isin (car lst) factor)
	    		(progn
	      			(if (equal (car lst) factor)
		  				(+ 1 (isin (cdr lst) factor))
						(isin (cdr lst) factor)
	      			)
	    		)
			)
		)
	)
)

(defun delete-factor (lst factor)
	(if (null lst)
		nil
		(progn
			(if (not (equal (car lst) factor))
				(cons (car lst) (delete-factor (cdr lst) factor))
				(delete-factor (cdr lst) factor)
			)
		)
	)
)

(defun repeat-make (n &optional (symbolname 'x))
	(if (= n 0)
		nil
		(cons symbolname(repeat-make (- n 1) symbolname))
	)
)


(defun dvmult (expr symbolname)
	(print expr)
	(if (atom expr)
		(if (equal expr symbolname) 1 0 )
		(progn
			
			(let ((order (isin expr symbolname)))	
				(cons (car expr) (cons order (append (cdr (delete-factor expr symbolname)) (repeat-make (- order 1) symbolname))))
			)
		)
	)
)


(defun isallatom (lst)
	(if (null lst)
		t
		(if (atom (car lst))
			(isallatom (cdr lst))
			nil
		)
	)
)




(defun dv (expr &optional (symbolname 'x))
	(if (= (isin expr symbolname) 0)
		'(0)
		(progn
			(cond
				((equal (car expr) '+)(cons '+ (dv (cdr expr) symbolname)))
				((equal (car expr) '-)(cons '- (dv (cdr expr) symbolname)))
				(t
					(cons (dvmult (car expr ) symbolname) (dv (cdr expr) symbolname))
				)
			)
		)
	)
)


ax^2 + bx + c をxについて微分します

S式で表された関数とか使わない単純な多項式の微分ならできるはずです


なんか今日疲れたわ
スポンサーサイト

comment 0 trackback 0
トラックバックURL
http://telracsmoratori.blog.fc2.com/tb.php/137-85810ae3
トラックバック
コメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。