Ошибка ввода недостаточно аргументов - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь построить Потенциал Юкавы в Matlab, и я хочу, чтобы моя программа прошла через пользовательские вводы для значений alpha (в моей программе это называется alph) и l. Значения, которые мне нужно использовать, составляют 0,1, 0,2 и 0,3 для альфы со значениями 0, 1 и 2 от l для каждого значения альфа. Я знаю, что мог бы создать цикл для этого, но он не должен быть красивым, и я хочу проверить значения по одному. В любом случае, я получаю сообщение об ошибке после ввода значений для альфа, ошибка, которую я получаю, находится в моей функции, говоря, что у меня недостаточно входных аргументов. На выходе должны быть T-матрица, гамильтонова матрица и график первых 10 собственных функций.

Я попытался войти и просто определить альфа как числа, которые я хочу посмотреть, и программа отлично работает сотображение вывода я ищу. Я просто хочу иметь возможность изменять значения для альфа без необходимости изменять саму программу. У меня не было проблем со входами l.

r = linspace(0.05,19.95,1999)
n = 1999
dr = 0.05
a = full(gallery("tridiag",n,1,-2,1))
T = -0.5*a/(dr^2)
l = input('Input a value for l.')
alph = input('Input a value for alpha.')
v = arrayfun(@(r) yuk_pot(r,l),r);
V = diag(v)

H = T + V
[O,D] = eig(H);

 plot(r,O(:,1),r,O(:,2),r,O(:,3),r,O(:,4),r,O(:,5),r,O(:,6),r,O(:,7),r,O(:,8),r,O(:,9),r,O(:,10))

function v = yuk_pot(r,alph,l)
   v = (-exp(-alph*r)/r) + 0.5*(l*(l+1)/(r^2));
end


1 Ответ

1 голос
/ 06 ноября 2019

ваша функция function v = yuk_pot(r,alph,l) имеет 3 входных аргумента.

вы вызываете ее с 2 аргументами (r и l) v = arrayfun(@(r) yuk_pot(r,l),r);

что насчет второго alphаргумент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...