teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2020/08/11 03:03

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -17,4 +17,12 @@
17
17
  sym.plot(dy, (y, -5, 5))
18
18
  ```
19
19
 
20
- ![イメージ説明](888f054fddcb85db6971df89a6cebe49.png)
20
+ ![イメージ説明](888f054fddcb85db6971df89a6cebe49.png)
21
+
22
+ ## 追記
23
+
24
+ ```python
25
+ f_x = (f.subs([(x, h), (y, 0)]) - f.subs([(x, 0), (y, 0)])) / h
26
+ if f_x == sym.nan:
27
+ print("偏微分できない")
28
+ ```

1

修正

2020/08/11 03:03

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,13 +1,20 @@
1
1
  Sympy を使っているなら、diff() で記号操作で偏微分して、subs() でもう一方の変数を0に置き換えればいいのではないでしょうか。
2
2
 
3
3
  ```python
4
- from IPython.display import display
4
+ from IPython.display import display, Latex
5
5
 
6
6
  f = (x ** 2 + x * y + y ** 2) * sym.log(x ** 2 + y ** 2)
7
7
 
8
8
  display(f)
9
+
9
- display(sym.diff(f, x).subs({y: 0}))
10
+ dx = sym.diff(f, x).subs({y: 0})
10
- display(sym.diff(f, y).subs({x: 0}))
11
+ dy = sym.diff(f, y).subs({x: 0})
12
+
13
+ display(dx)
14
+ sym.plot(dx, (x, -5, 5))
15
+
16
+ display(dy)
17
+ sym.plot(dy, (y, -5, 5))
11
18
  ```
12
19
 
13
- ![イメージ説明](ca3dc5e67e996a8c0ebaeb57453797a2.png)
20
+ ![イメージ説明](888f054fddcb85db6971df89a6cebe49.png)