2015-08-10 4 views
0

Я пытаюсь установить некоторые данные с помощью gnuplot.Установка в gnuplot с тремя переменными

Вот данные (переменные ч, K, L и I):

#h k l I 

2 1 1 7807 
2 2 0 9664 
3 2 1 6042 
4 0 0 1394 
3 3 2 1358 
4 2 0 4896 

### Function 
I(h,k,l) = M * (F * ((sin(A*pi*sqrt(h*h+k*k+l*l)*L))/(A*2*pi*sqrt(h*h+k*k+l*l))))^2 

### Initial values 
M=1 
F=0.5 
A=1 
L=1 

### Fitting 
fit I(h,k,l) "cavendish.data" using 1:2:3 via M, F, A, L 

Я хочу, чтобы определить константы M, F, A и L из этого фитинга.

Когда я запускаю этот код, я получаю сообщение неопределенных переменный: ч

Как мог определить переменные. Заранее спасибо.

+0

Вы не имеете три переменные, но один: квадратное среднее ч, к, л, что вы должны перейти от I (h, k, l) к оператору 'using'. И ваши первоначальные значения, похоже, уходят, пригонка сходится далеко от того, что не выглядит очень цисталлографическим. ;-) – Karl

ответ

1

Попробуйте использовать последнюю версию gnuplot (> = 5.0), которая поддерживает команды с более чем двумя переменными (см. release notes). Также обратите внимание, что оператор питания в gnuplot равен **, а не ^.

Вы пример должен быть немного изменен на работу:

### Function 
I(h,k,l) = M * (F * ((sin(A*pi*sqrt(h*h+k*k+l*l)*L))/(A*2*pi*sqrt(h*h+k*k+l*l))))**2 

### Initial values 
M=1.0 
F=0.5 
A=1.0 
L=1.0 

### Fitting 
set dummy h, k, l 
fit I(h,k,l) "cavendish.data" using 1:2:3:4 via M, F, A, L 
+0

спасибо за ваш ответ. Хотя я определяю фиктивные переменные, я получаю такую ​​ошибку: (set dummy h, k, l; "./script-curveFitting.sh", строка 108: ';' ожидается). – Vijay

+0

Дополнительная информация: Значения для # h, k, l и I, заданные в начале моего сообщения, - это набор данных, который я использую для этого кода. Файл «cavendish.data» содержит эти значения. – Vijay

+1

Я получаю ошибку, которую вы описали только при использовании старых версий gnuplot. Какую версию вы используете? –