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

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

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

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

Q&A

解決済

1回答

818閲覧

pythonで偏微分可能か調べたい

himazin392

総合スコア7

Python

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

0グッド

0クリップ

投稿2020/08/11 02:12

編集2020/08/11 03:08

pythonで偏微分可能か調べたいのですが、実行結果がnanとして表示されました。
trigsimp()で簡単化をしておりますが、なかなかうまくいかないです。
公式の通り以外の方法がありますでしょうか

python

1 2import sympy as sym 3import math 4sym.init_printing() 5Pi = sym.S.Pi # 円周率 6E = sym.S.Exp1 # 自然対数の底 7I = sym.S.ImaginaryUnit # 虚数単位 8oo = sym.oo # 無限大 9 10# 使用する変数の定義(小文字1文字は全てシンボルとする) 11(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) = sym.symbols('a b c d e f g h i j k l m n o p q r s t u v w x y z') 12 13import numpy as np 14import matplotlib.pyplot as plt 15from mpl_toolkits.mplot3d import Axes3D 16#原点で偏微分可能か調べる。可能ならば偏微分せよ 17aa=(x**2+x*y+y**2)*sym.log(x**2+y**2) 18 19#原点でxに関して偏微分する 20f_x=(aa.subs([(x,h),(y,0)]).trigsimp()-aa.subs([(x,0),(y,0)]).trigsimp())/h 21print('{0}'.format(f_x))

#参考質問
https://qiita.com/tibigame/items/aebbac176d9bbdaf3d15
#公式。やりたいこと
条件
f(x,y)=(x^2+xy+y^2)log(x^2+y^2) :((x,y)≠(0,0))
= 0 :((x,y)=(0,0))

公式
fx(0,0)= lim h->0 ( f(h,0)-f(0,0))/h
= lim h->0 ( h^2log(h^2))/h
=lim h->0 (-2h) =0
tex形式で書きたかったのですが分かりづらくて申し訳ありません

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Sympy を使っているなら、diff() で記号操作で偏微分して、subs() でもう一方の変数を0に置き換えればいいのではないでしょうか。

python

1from IPython.display import display, Latex 2 3f = (x ** 2 + x * y + y ** 2) * sym.log(x ** 2 + y ** 2) 4 5display(f) 6 7dx = sym.diff(f, x).subs({y: 0}) 8dy = sym.diff(f, y).subs({x: 0}) 9 10display(dx) 11sym.plot(dx, (x, -5, 5)) 12 13display(dy) 14sym.plot(dy, (y, -5, 5))

イメージ説明

追記

python

1f_x = (f.subs([(x, h), (y, 0)]) - f.subs([(x, 0), (y, 0)])) / h 2if f_x == sym.nan: 3 print("偏微分できない")

投稿2020/08/11 02:23

編集2020/08/11 03:03
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

himazin392

2020/08/11 02:41

解答ありがとうございます。すいません 偏微分の公式で原点で偏微分か可能か調べる、fx(0,0)=(f(h,0)-f(0,0))/hを用いてh->0の時の値を求めるのはどのようにすればよろしいのでしょうか
tiitoi

2020/08/11 03:00 編集

x^2 + y^2 = 0 ⇔ x = 0, y = 0 のときは log(x^2 + y^2) が定義されないので、f(0, 0) が存在しません。 なので、(f(h. 0) - f(0, 0))/h を定義した時点で NaN が発生していたら、(0, 0) では偏微分できないと判断できると思います。NaN は x/0 (0除算) や log(0) のように定義されない演算を行った場合の演算結果です。 https://www.wolframalpha.com/input/?i=d%2Fdx+%28x%5E2+%2B+xy+%2B+y%5E2%29+log%28x%5E2+%2B+y%5E2%29&lang=ja
himazin392

2020/08/11 03:16

ありがとうございました。勉強不足でした。また、よろしければよろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問