2016-03-15 54 views
-1

我想在程序OriginPro中構建一個函數,但在編譯腳本時收到一個未聲明錯誤的變量。該腳本應該用係數a,b,c和d來求解一個三次方程,使用Newman迭代法,然後使用該解來優化參數K1,K2,E0,E1,E2和Gt(不是OriginPro會這樣做),然後重新使用優化參數再次求解三次方程。編譯腳本時出現錯誤「變量」「未聲明」。我在下面粘貼了腳本。任何幫助將不勝感激。在OriginPro數據擬閤中變量未聲明的錯誤

//---------------------------------------------------------- 
// 
void _nlsfNMR2to1Iterative(
// Fit Parameter(s): 
double K1, double K2, double E0, double E1, double E2, double Gt, 
// Independent Variable(s): 
double x, 
// Dependent Variable(s): 
double& y) 
{ 
// Beginning of editable part 
a=K1*K2; 
b=K1+2*K2*K1*x-K1*K2*Gt; 
c=1+K1*x-K1*Gt; 
d=-Gt; 

for(G=x, step=1; abs(step)>1e-15; G=G-step){ 
    step=(a*G*G*G+b*G*G+c*G+d)/(3*a*G*G+2*b*G+c);}; 

y=E0*G+Ht*(E1*K1*G+E2*K1*K2*G*G)/(1+K1*G+K1*K2*G*G) 
// End of editable part 
} 
+0

錯誤是明確什麼是'了'?它沒有被定義,這不可能是你的完整代碼 – EdChum

+0

我看不到'a','b','c'或'd'在這裏的任何地方...... –

+0

如何聲明變量? – Zeffner

回答

0

你需要一個類型添加到abc,並d聲明。

變化:

a=K1*K2; 
b=K1+2*K2*K1*x-K1*K2*Gt; 
c=1+K1*x-K1*Gt; 
d=-Gt; 

double a=K1*K2; 
double b=K1+2*K2*K1*x-K1*K2*Gt; 
double c=1+K1*x-K1*Gt; 
double d=-Gt; 
+0

這似乎是爲a,b,c和d做的。現在它給了我與G相同的錯誤 - 我應該將其添加到我的依賴變量列表中嗎? – Zeffner

+0

@Zeffner,當然可以。 –

+0

謝謝!這清理了編譯錯誤:) – Zeffner