質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

python 微分でxを定義する方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

-1評価

0クリップ

433閲覧

投稿2019/01/06 14:27

編集2019/01/07 00:08

pythonにて微分の問題を解くプログラムを組んでいるのですがxの定義の仕方が分かりません
下のコードの一番最後です。

python

class Expression: def eval(self, x_value): '''変数 x の値が x_value だった時の式の値を返すメソッド''' raise NotImplementedError def diff(self): '''式を変数 x で微分した式に対応する Expression オブジェクト を返すメソッド''' raise NotImplementedError class Number(Expression): '''変更の必要なし''' def __init__(self, number): self.number = number def eval(self, x_value): return self.number def diff(self): return Number(0) class BinalyExpression: def __init__(self, a, b): self.a=a self.b=b class Add(BinalyExpression): def eval(self, x_value): return self.a.eval() + self.b.eval() def diff(self): return self.a.diff() + self.b.diff() pass class Sub(BinalyExpression): def eval(self, x_value): return self.a.eval() - self.b.eval() def diff(self): return self.a.diff() - self.b.diff() pass class Mul(BinalyExpression): def eval(self, x_value): return self.a.eval() * self.b.eval() def diff(self): return self.a.diff() * self.b.diff() pass class Div(BinalyExpression): def eval(self, x_value): return self.a.eval() / self.b.eval() def diff(self): return self.a.diff() / self.b.diff() pass class X(Expression): pass

このテストファイルを実行できるようにしたいです
↓テストファイル↓

python

import unittest from expr import Expression, Number, X, Add, Sub, Mul, Div class TestExpr(unittest.TestCase): def test_x_is_expression(self): self.assertIsInstance(X(), Expression) def test_x_eval_10(self): self.assertEqual(X().eval(10), 10) def test_x_diff_is_a_number(self): self.assertIsInstance(X().diff(), Number) def test_x_diff(self): self.assertEqual(X().diff().eval(0), 1) def test_2x_3_eval(self): f = Add(Mul(Number(2), X()), Number(3)) # f(x) = 2x + 3 self.assertEqual(f.eval(10), 23) def test_2x_3_diff(self): f = Add(Mul(Number(2), X()), Number(3)) # f(x) = 2x + 3 self.assertEqual(f.diff().eval(100), 2) def test_xx_3x_2_eval(self): x = X() f = Add(Add(Mul(x, x), Mul(Number(3), x)), Number(2)) # f(x) = x**2 + 3x + 2 self.assertEqual(f.eval(10), 132) def test_xx_3x_2_diff(self): x = X() f = Add(Add(Mul(x, x), Mul(Number(3), x)), Number(2)) # f(x) = x**2 + 3x + 2 self.assertEqual(f.diff().eval(10), 23) def test_sub(self): x = X() f = Sub(Mul(x, x), Mul(Number(2), x)) # f(x) = x**2 - 2x self.assertEqual(f.eval(2), 0) def test_sub_diff(self): x = X() f = Sub(Mul(x, x), Mul(Number(2), x)) # f(x) = x**2 - 2x self.assertEqual(f.diff().eval(2), 2) def test_div(self): x = X() f = Div(x, Add(Mul(x, x), Number(1))) # f(x) = x / (x**2 + 1) self.assertAlmostEqual(f.eval(2), 0.4) def test_div_diff(self): x = X() f = Div(x, Add(Mul(x, x), Number(1))) # f(x) = x / (x**2 + 1) self.assertAlmostEqual(f.diff().eval(1), 0) self.assertAlmostEqual(f.diff().eval(2), -3/25) if __name__ == '__main__': unittest.main(verbosity=2)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。