«Слишком много входных аргументов» Ошибка при попытке запустить скрипт в MATLAB

avatar
Sam
8 августа 2021 в 21:41
77
0
0

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

Вот основной скрипт(этот файл называется 'ele_assignment_ii.m':

clear
format short

%The following part is for part (a)
dx = input('Enter the integration increment dx... \n >');
dy = input('Enter the integration increment dy... \n >');
total_charge=0;
for x=0:dx:1, 
for y=0:dy:1,
total_charge=rho_s_fun(x,y)*dx*dy+total_charge;
end
end
disp(sprintf('The total charge computed by manual double'));
disp(sprintf(' integration is %d nC',total_charge));
total_charge=dblquad(@rho_s_fun, 0, 1, 0, 1);
disp(sprintf('The total charge computed by the functional'))
disp(sprintf(' double integration is %d n',total_charge))

%The following for part (b)
Etotal=0;
for x=0:dx:1,
for y=0:dx:1,
rminusrprime=[-x -y 5];
numerator=rho_s_fun(x,y)*1e-9*dx*dy*rminusrprime;
denominator=4*pi*1e-9/(36*pi)*norm(rminusrprime)^3;
Etotal=Etotral+numerator/denominator;
end
end
disp(sprintf('The electric field computed by manual double'));
disp(sprintf(' integration is (%d, %d, %d) V/m',... 
    Etotal(1), Etotal(2), Etotal(1)))

Вот код функции (этот файл называется rho_s_fun.m):

function rho_s_fun = rho_s_fun()
    rho_s_fun = @(x,y) (x.*y).*(x.^2 + y.^2 + 25).^(3/2);
end

И, наконец, вот ошибка при запуске основного скрипта:

>> ele_assignment_ii
Enter the integration increment dx... 
 >2
Enter the integration increment dy... 
 >2
Error using rho_s_fun
Too many input arguments.

Error in ele_assignment_ii (line 10)
total_charge=rho_s_fun(x,y)*dx*dy+total_charge;

Насколько я понимаю, эта ошибка, по-видимому, вызывает последующую ошибку в строке 10.

Как изменить этот код, чтобы он работал?

Источник
Sam
8 августа 2021 в 21:50
0

Также вы можете быстро указать: «Это распространенная ошибка, и я должен изучить другие вопросы и их решения». Ну, все, что я могу сказать, это то, что муха может летать, но птица не может летать. Я не могу делать то, чего не знаю.

Rotem
8 августа 2021 в 22:46
2

Попробуйте заменить содержимое rho_s_fun.m на: function z = rho_s_fun(x, y) новая строка, z = (x.*y).*(x.^2 + y.^2 + 25).^(3/2); новая строка, end

Cris Luengo
8 августа 2021 в 22:51
1

Вы путаете анонимные функции и обычные функции. В вашем файле rho_s_fun.m напишите только следующие две строки: function z = rho_s_fun(x,y) и z = (x.*y).*(x.^2 + y.^2 + 25).^(3/2);

Sam
8 августа 2021 в 22:51
0

@Rotem в файле функций, да?

Cris Luengo
8 августа 2021 в 22:52
0

Да, в файле «rho_s_fun.m».

Sam
8 августа 2021 в 23:01
0

Кажется, теперь это работает😅, но когда я запускаю файл функции, я получаю ноль. Это потому, что я не определил x и y?

Ответы (0)