एक अभिन्न अजगर का उपयोग कर अंदर फिटिंग पैरामीटर (या किसी अन्य उपयोगी भाषा)

वोट
0

मैं मूल रूप से च (x) के एक समारोह के रूप में की जानकारी के साथ डेटा का एक सेट है, और खुद को x। मैं इस समस्या के सिद्धांत से पता है कि मैं f (x) है, जो नीचे अभिव्यक्ति के रूप में दिया जाता है के प्रारूप पर काम कर रहा हूँ:

Eq।

अनिवार्य रूप से, मैं डेटा के इस सेट का उपयोग करने के मानकों को ए और बी लगाना चाहते हैं। मेरी समस्या यह है: मैं ऐसा कैसे कर सकते हैं? मैं क्या पुस्तकालय इस्तेमाल करना चाहिए? मैं अजगर का उपयोग कर एक उत्तर चाहता है। लेकिन आर या जूलिया के रूप में अच्छी तरह से ठीक हो जाएगा।

सब कुछ मैं अब तक किया था से, मैं एक functionallity कहा जाता है के बारे में पढ़ा है वक्र फ़िट SciPy लाइब्रेरी से, लेकिन मैं कुछ परेशानी जो फार्म में मैं कोड के रूप में लंबे मेरी एक्स चर एकीकरण सीमा में से एक में स्थित है क्या करना होगा आ रही हैं ।

समस्या के साथ काम करने के बेहतर तरीकों के लिए, मैं भी निम्न संसाधन हैं:

एक नमूना सेट , जिसके लिए मैं मापदंडों मैं तलाश कर रहा हूँ पता है। इस सेट करने के लिए मुझे पता है एक = कि 2 और ख = 1 (और c = 3)। और इससे पहले कि इसके बारे में मैं कैसे इन मानकों को पता है कुछ सवाल ही उगता है: मैं उन्हें पता है क्योंकि मैं इस नमूने सिर्फ उपरोक्त समीकरण के एकीकरण से इस पैरामीटर का उपयोग कर मैं उन्हें कैसे खोजने के लिए और एक संदर्भ हो सकता है की जांच के लिए नमूना उपयोग करने के लिए सेट बनाया है।

मैं भी इस सेट है , जिसके लिए केवल जानकारी मेरे पास है c = 4 और ए और बी लगाना चाहते हैं।

मुझे लगता है कि बाहर बात करने के लिए भी करना चाहते हैं:

i) अभी मैं यहाँ पोस्ट करने के लिए, क्योंकि मैं कैसे कुछ लिखने के लिए मेरी समस्या हल करने के लिए एक सुराग नहीं है कोई कोड है। लेकिन मैं संपादित करने के लिए खुश हो सकता है और किसी भी सवाल का जवाब या मदद आप लोग मुझे प्रदान कर सकता है कि पढ़ने के बाद प्रश्न अपडेट होगा।

ii) मैं एक समाधान है, जहां मैं ए और बी पता नहीं है के लिए पहले देख रहा हूँ। लेकिन मामले में है कि यह बहुत कठिन है मैं कुछ समाधान मैं कहाँ लगता है कि एक या तो एक या बी में जाना जाता है को देखने के लिए खुशी होगी।

13/01/2020 को 23:59
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
0

वे तीन चर एक, ख, ग, जो स्वतंत्र नहीं हैं। अगर हम गणना प्रतिगमन को दो अन्य लोगों का धन्यवाद करना चाहता हूँ उनमें से एक दिया जाना चाहिए। दी ग के साथ, एक के लिए सुलझाने, ख सरल है:

यहाँ छवि विवरण दर्ज

संख्यात्मक पथरी का उदाहरण नीचे है ताकि इसे आसान जांच करने के लिए बनाने के लिए एक छोटे से डेटा (n = 10) के साथ किया जाता है।

यहाँ छवि विवरण दर्ज

ध्यान दें कि प्रतिगमन समारोह टी (y) जो वास्तव में के लिए y (एक्स) के रूप में ही जब डेटा बिखर जाता है नहीं है के लिए है (परिणाम कोई बिखराव अगर एक ही है)।

तो इसके लिए y (एक्स) प्रतिगमन के लिए बिल्कुल जरूरी है एक गैर रेखीय प्रतिगमन आवश्यक है। यह एक सतत प्रक्रिया ए, बी के लिए अच्छा enought प्रारंभिक अनुमान से शुरू करना शामिल है। ऊपर पथरी बहुत अच्छा प्रारंभिक मान देता है।

के अतिरिक्त :

इस बीच एंड्रिया एक उचित उत्तर पोस्ट। क्योंकि यह एक गैर रेखीय प्रतिगमन के बजाय रेखीय है के रूप में पहले से ही ऊपर टिप्पणी में बताया उसकी विधि के साथ पाठ्यक्रम फिटिंग का बेहतर है।

फिर भी, विभिन्न मूल्यों के बावजूद (एक = 1.881, बी = 1.617) की तुलना में (एक = 2.346, ख = -0.361) संबंधित घटता नीचे खींचा दूर दूसरे से नहीं कर रहे हैं:

ब्लू वक्र: रेखीय प्रतीपगमन से (विधि से ऊपर)

ग्रीन वक्र: गैर रेखीय प्रतिगमन से (एंड्रिया के)

यहाँ छवि विवरण दर्ज

14/01/2020 को 15:25
का स्रोत उपयोगकर्ता

वोट
0

मैं एक शुद्ध संख्यात्मक दृष्टिकोण, जब आप सीधे अभिन्न समाधान नहीं कर सकते जो तुम भी उपयोग कर सकते हैं का प्रयोग करेंगे। यहाँ केवल फिटिंग के लिए एक snipper है aपैरामीटर:

import numpy as np
from scipy.optimize import curve_fit
import pandas as pd
import matplotlib.pyplot as plt

def integrand(x, a):
    b = 1
    c = 3
    return 1/(a*np.sqrt(b*(1+x)**3 + c*(1+x)**4))

def integral(x, a):
    dx = 0.001
    xx = np.arange(0, x, dx)
    arr = integrand(xx, a)
    return np.trapz(arr, dx=dx, axis=-1)

vec_integral = np.vectorize(integral)

df = pd.read_csv('data-with-known-coef-a2-b1-c3.csv')
x = df.domin.values
y = df.resultados2.values
out_mean, out_var = curve_fit(vec_integral, x, y, p0=[2])

plt.plot(x, y)
plt.plot(x, vec_integral(x, out_mean[0]))
plt.title(f'a = {out_mean[0]:.3f} +- {np.sqrt(out_var[0][0]):.3f}')
plt.show()

vec_integral = np.vectorize(integral)

यहाँ छवि विवरण दर्ज

बेशक, आप का मूल्य कम कर सकते हैं dxवांछित परिशुद्धता प्राप्त करने के लिए। सिर्फ फिटिंग के लिए एक ओर जहां a, जब आप देवदार करने की कोशिश bके रूप में अच्छी तरह से फिट ठीक से अभिसरण नहीं करता है (क्योंकि मेरी राय में aऔर bदृढ़ता से सहसंबद्ध होते हैं)। यहाँ आप क्या मिलता है:

def integrand(x, a, b):
    c = 3
    return 1/(a*np.sqrt(np.abs(b*(1+x)**3 + c*(1+x)**4)))

def integral(x, a, b):
    dx = 0.001
    xx = np.arange(0, x, dx)
    arr = integrand(xx, a, b)
    return np.trapz(arr, dx=dx, axis=-1)

vec_integral = np.vectorize(integral)

out_mean, out_var = sp.optimize.curve_fit(vec_integral, x, y, p0=[2,3])
plt.title(f'a = {out_mean[0]:.3f} +- {np.sqrt(out_var[0][0]):.3f}\nb = {out_mean[1]:.3f} +- {np.sqrt(out_var[1][1]):.3f}')

plt.plot(x, y, alpha=0.4)
plt.plot(x, vec_integral(x, out_mean[0], out_mean[1]), color='green', label='fitted solution')
plt.plot(x, vec_integral(x, 2, 1),'--', color='red', label='theoretical solution')
plt.legend()
plt.show()

यहाँ छवि विवरण दर्ज

आप देख सकते हैं, भले ही जिसके परिणामस्वरूप aऔर bमानकों को फिट फार्म "अच्छा नहीं" हैं, साजिश बहुत समान है।

14/01/2020 को 16:24
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more