最小の傾きを調べる方法

조회 수: 10 (최근 30일)
mi
mi 2021년 5월 26일
댓글: mi 2021년 7월 30일
plot(A,B)を使い、X座標がAデータ Y座標がBデータに対応する曲線を描きました。(図参照)
この曲線が示すデータで、X座標が40の間隔をもつ2点(例(20 2.8)と(60 2.5))を結ぶ直線のうち、
最も傾きが小さい直線を探し、それのy切片を知りたいのですが
初心者のためどのように出せばよいかわかりません。
ご教示いただけますと幸いです。
  댓글 수: 5
mi
mi 2021년 5월 28일
ありがとうございます。
内挿のページを見たところ、すでに関数になっている(B=f(A))グラフに対しての解説はありましたが、
現状ですとA-B間の関数は得られておりません。
このような状態で内挿を行うことはできますでしょうか。
mi
mi 2021년 7월 30일
無事内挿を用いて、xを0.01きざみで座標点を得ることができました。
そこから幅40の傾きのうち最小のものを求められました。
ありがとうございました。

댓글을 달려면 로그인하십시오.

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 5월 29일
下記の数式は回帰分析で導出したのではなく(そもそも座標データが提示されていない)、曲線がシグモイド関数に似ている事から同関数の式の係数を調整して作成しました。またこの数式は質問文と90度違っていて、xが縦軸B, y=f(x)が横軸Aです。
>X座標が40の間隔をもつ2点を結ぶ直線のうち、最も傾きが小さい直線を探し、それのy切片を知りたい
安直に隣り合う2点の傾きの最小値を探して直線の式をプロットしました。まだ質問文の求める傾きは求められていません。
f = @(x)100./(1+exp(x.*5-12));
B = 0.1:0.13:5.5;
A = f(B);
D = [0 diff(A)./diff(B)]; % 傾き=差分の割合
[minD, ind] = min(D); % 最小の傾きを求める
lA = minD * B; % 直線のB,A座標を求める
lA = lA - lA(ind) + A(ind); % 傾き最小の点を通る直線にする
% 以下はプロット
subplot(1,2,1); plot(A,B,'-o',lA,B); % B,A座標を青の○で、傾き最小の直線を橙線でプロット
title('A,B座標'); xlabel('B'); ylabel('A');
xlim([0 100]); ylim([0 6]);
subplot(1,2,2); plot(D,B,'-o'); % 傾きをプロット
title('傾き'); xlabel('B'); ylabel('A');
この質問の回答し難い点は「X座標が40の間隔をもつ2点」が必要な点です。X座標(A)が等間隔ではないと言う事ですし、上記の例でも等間隔をもつ傾きを得られていません。問題に答えるにはデータを回帰分析してフィットする数式を求める必要があります。回帰分析については下記公式回答が参考になると思います。まず座標データを回帰分析して等間隔なA座標が得られるようにしてみてください。
  댓글 수: 1
Atsushi Ueno
Atsushi Ueno 2021년 5월 29일
편집: Atsushi Ueno 2021년 5월 29일
もう一つ必要な情報が「横方向の間隔40の2点間の傾きは、その間どこの点の傾きとするか」です。それを決めないとy切片も決まりません。自然に考えると「横方向の間隔40の真ん中20の座標を持つ点」(雑で申し訳ないですが下図参照)だと思うのですが、曲線の曲がり具合によっては必ずしもその点の微分係数と一致しないので、確認が必要です。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Curve Fitting Toolbox 入門에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!