任意のxベクトルに対​して、yベクトルの一​次微分を計算すること​はできますか?

9 vues (au cours des 30 derniers jours)
non
non le 19 Juin 2023
Commenté : non le 23 Juin 2023
実験データを一次微分する方法に詰まっており、こちらでご質問させていただきます。
MATLABで、yベクトルの値を一次微分したいです。xベクトルは0.05, 0.1, 0.15, 0.20 …といった連続した値です。
MATLABのdiff(y, 1)の計算では、想定よりも小さな値が出力されました。他の解析ソフトウェアで、xベクトルを1, 2, 3, 4…した場合にはdiff(y, 1)と同じ計算結果でした。
MATLABで任意のxベクトルに対して、yベクトルの一次微分を計算するとことは可能でしょうか?または、diff(y, 1)で計算した後に、求めたいxの増分に変換すべきなのでしょうか?
基礎的なことが分かっていない状態でのご質問を失礼いたします。もし可能でしたら、ご教示のほど、よろしくお願いいたします。

Réponse acceptée

Hernia Baby
Hernia Baby le 19 Juin 2023

想定した微分がわかりませんが、カーブフィットしたモデルに対して微分をとってるのかなと思いました。

differentiateはいかがでしょうか?

  3 commentaires
Hernia Baby
Hernia Baby le 22 Juin 2023
Modifié(e) : Hernia Baby le 22 Juin 2023
今回は正弦波で見てみましょう
dx = 0.01;
x = (0:dx:1)';
y = sin(2*pi*x);
以下のように関数を自作します
求めたい関数(端点y0 = y1, yn+1 = ynとする)は以下のような式になります
dy = diff(y);
fc = ([dy(1); dy]/dx + [dy; dy(end)]/dx)./2;
真値を設定します
ft = (2*pi)*cos(2*pi*x);
図示します
figure
hold on
plot(x,fc,'ko-')
plot(x,ft,'r:')
legend('自作式','真値')
non
non le 23 Juin 2023
Hernia Baby様
ご回答をありがとうございます。
いただいたコードにより、他のソフトウェアと同じ計算結果が得られました。
dyベクトルを端点を含む形に再定義することにより離散データを微分するという方法は、全く思いもよらず、大変勉強になりました。
自身の疑問は解決いたしました。この度はありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (1)

Akira Agata
Akira Agata le 22 Juin 2023
微分の定義 () より、dy を dx で割る必要があります。
たとえば今回の場合、x ベクトルの差分 dx は 0.05 のようですので、一次微分は以下のように求められます。
dx = 0.05;
ydot = diff(y)/dx;
  1 commentaire
non
non le 22 Juin 2023
Akira Agata様
ご回答いただき、誠にありがとうございます。
教えていただきましたコードを用いて、xベクトルに対するyの微分をできました。
ただ、求まるydot要素数が、元のyベクトルと比べて1つ小さくなってしまいました。
他のソフトウェアで求める微分値との差は0とみなせる程小さいのですが、可能であれば、他のソフトウェアと同じ結果をMATLABでも確認したいと考えております(元のyベクトルと同じ要素数で微分を求めたいです)。
上述の他のソフトウェアの微分アルゴリズムを、添付させていただきます。
このような計算をMATLABで実行する方法を探し出せず、何かご存じのことないでしょうか。
もし可能でしたらご教示いただきたいです。よろしくお願いいたします。

Connectez-vous pour commenter.

Catégories

En savoir plus sur 関数の基礎 dans Help Center et File Exchange

Produits


Version

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!