curve fitting - Find values of constants in equation using MATLAB -
मेरे पास समीकरण F (f) = a * f ^ 3 + b * f + c
। मुझे डेटा के वैक्टर, पी
, स्वतंत्र चर, 'एफ' पता है मुझे a
, b
, c
के मूल्यों को खोजने की आवश्यकता है I क्या मैंने कोशिश की:
function [val] = myfunc (par_fit, f, p)% यह मुझे a, b, c% p = af ^ 3 + bf + c val = norm देता है पी - (पैरा_टेट (1) * (एफ। 3)) + (पैरा_टिफट (2) * एफ) + (पर्स_टिफेट (3))); अंत my_par = fminsearch (@ (par_fit) myfunc (par_fit, f, p), रैंड (1,3));
यह मुझे my_par = [1.9808 -2.2170 -24.8039]
देता है, या a = 1.9808
, b = -2.2170
, और सी = -24.8039
, लेकिन मुझे लगता है कि b
5 से बड़ा होना चाहिए, और c
शून्य से बड़ा होना चाहिए ।
मुझे लगता है कि आपकी समस्या हो सकती है क्योंकि आपका उद्देश्य कार्य गलत है:
val = norm (p - (par_fit (1) * (f। ^ 3)) + (पैरा_टिफट (2) * f) + (पैरा_टिफ (3)));
शायद होना चाहिए:
val = norm (p- (par_fit (1) * f। ^ 3 + par_fit (2) * f + par_fit (3)));
लेकिन जब आप fminsearch
के बजाय fmincon
का उपयोग कर कम से कम करते हैं, तो आप चर के मूल्यों को सीमित कर सकते हैं। lb
इनपुट को [- inf -inf 0]
सेट करके, पहले दो गुणांक किसी भी वास्तविक संख्या की अनुमति है, लेकिन तीसरे गुणांक से अधिक या बराबर होना चाहिए शून्य करने के लिए उदाहरण के लिए: (मैंने यह भी दिखाया है कि मैट्रिक्स पद्धति का उपयोग करते हुए समस्या (गैर-नकारात्मकता बाधा के बिना) को हल करने के लिए)
% नमूना डेटा f = (0: .1: 1) । '; P = 2 * f। ^ 3 + 3 * f + 1 + randn (आकार (च))% वान डेर मोंडे मैट्रिक्स एम = [एफ। 3 एफ एफ ^ 0]; सी = एम \ p; % आकार (एफ) & gt; आकार (एफ) my_par = fmincon (@ (c) आदर्श (पी- (सी (1) * एफ। ^ 3 + सी (2) * एफ अगर कम से कम वर्गों में मैट्रिक्स समस्या का समाधान करना + सी (3))), रैंड (1,3), [], [], [], [], [- इन्फ 5 0], []) सी। प्लॉट (एफ, पी, 'ओ', एफ, एम * सी, एफ, माइपर (1) * एफ। 3 + माइपर (2) * एफ + माइपर (3))
Comments
Post a Comment