데이터 세트에 방정식 맞추기

데이터 세트에 방정식 맞추기

나는 데이터 세트를 가지고 있습니다 :

1.12158 0.42563 0.07
1.12471 0.42112 0.07
1.12784 0.41685 0.07
1.13097 0.41283 0.07
1.13409 0.40907 0.07
1.13722 0.40556 0.07
1.14035 0.40231 0.07
1.14348 0.39933 0.07
1.1466 0.39661 0.07
1.14973 0.39417 0.07
1.15285 0.39201 0.07
1.15598 0.39012 0.07
1.15911 0.38852 0.07
1.16224 0.3872 0.07
1.16536 0.38618 0.07
1.16849 0.38544 0.07
1.17162 0.385 0.07
1.17474 0.38486 0.07
1.17787 0.38543 0.07
1.181 0.38714 0.07
1.18413 0.38994 0.07
1.18725 0.39378 0.07
1.19038 0.39858 0.07
1.19351 0.40426 0.07
1.19664 0.41071 0.07
1.19976 0.41786 0.07

첫 번째 열은 x축이고 두 번째 열은 y축입니다.

이 데이터를 방정식에 맞추고 싶습니다.

Ax^2 + Bx + c

A, B, c의 값을 구합니다.

어떤 프로그램을 사용할 수 있나요?

어떻게 해야 하는지 알려주시면 정말 기쁘겠습니다.

감사해요.

답변1

GNUplot: CLI 솔루션

data.dat데이터가 포함된 파일이라고 가정해 보겠습니다 .

$ gnuplot
gnuplot> fit a*x**2 + b*x + c 'data.dat' via a, b, c
(...)
Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a               = 22.2174          +/- 1.09         (4.906%)
b               = -51.7961         +/- 2.53         (4.885%)
c               = 30.5745          +/- 1.468        (4.802%)
(...)

바라보다문서의 섹션에 맞추기더 많은 선택을 위해.

GNUPlot으로 직접 파이프할 수도 있습니다.

printf '%s\n' 'fit a*x**2 + b*x + c "data.dat" via a, b, c' | gnuplot

답변2

XMGrace(Grace라고도 함): GUI 솔루션

data.dat데이터가 포함된 파일이라고 가정해 보겠습니다 .

xmgrace data.dat

XMGrace 창이 데이터를 나타내는 곡선과 함께 팝업됩니다.

도구 모음에서 를 선택합니다 Data > Transformations > Regression. Type of Fit: Quadratic및 를 선택합니다 Accept.

새로운 적합 곡선이 그려지고 "콘솔"이 나타납니다.

(...)
y = 30.575 - 51.796 * x + 22.217 * x^2
(...)

추가로 GUI를 사용하여 데이터를 검은색 점으로 만들고 빨간색 곡선에 맞출 수 있습니다.

XMGrace의 한 장면

XMGrace는 일부 기능이 부족하기는 하지만 CLI 인터페이스도 제공합니다. 자세한 내용은 다음을 통해 확인할 수 있습니다.문서에 액세스.

답변3

CLI를 통한 R의 솔루션

Linux의 첫 번째 터미널 유형R

그 다음에

data.dat<-read.table(textConnection("a b c
1.12158 0.42563 0.07
1.12471 0.42112 0.07
1.12784 0.41685 0.07
1.13097 0.41283 0.07
1.13409 0.40907 0.07
1.13722 0.40556 0.07
1.14035 0.40231 0.07
1.14348 0.39933 0.07
1.1466 0.39661 0.07
1.14973 0.39417 0.07
1.15285 0.39201 0.07
1.15598 0.39012 0.07
1.15911 0.38852 0.07
1.16224 0.3872 0.07
1.16536 0.38618 0.07
1.16849 0.38544 0.07
1.17162 0.385 0.07
1.17474 0.38486 0.07
1.17787 0.38543 0.07
1.181 0.38714 0.07
1.18413 0.38994 0.07
1.18725 0.39378 0.07
1.19038 0.39858 0.07
1.19351 0.40426 0.07
1.19664 0.41071 0.07
1.19976 0.41786 0.07"),header=TRUE)

그 다음에

plot(data.dat$a,data.dat$b,col="red",type="b")

R의 산점도

해결하려면 다음을 사용하십시오.

fit<-lm(data.dat$b~poly(data.dat$a,2,raw=TRUE))
summary(fit)

Call:
lm(formula = data.dat$b ~ poly(data.dat$a, 2, raw = TRUE))

Residuals:
       Min         1Q     Median         3Q        Max 
-0.0041754 -0.0021479  0.0004573  0.0019714  0.0059427 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                        30.575      1.468   20.83  < 2e-16 ***
poly(data.dat$a, 2, raw = TRUE)1  -51.796      2.530  -20.47 2.91e-16 ***
poly(data.dat$a, 2, raw = TRUE)2   22.217      1.090   20.38 3.20e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.002729 on 23 degrees of freedom
Multiple R-squared:  0.9568,    Adjusted R-squared:  0.9531 
F-statistic:   255 on 2 and 23 DF,  p-value: < 2.2e-16

관련 정보