나는 상미 분 방정식 (ODE)을 풀기 위해 다음과 같은 코드를 가지고있다. for 루프의 각 반복에서 긴 표현식을 입력하는 부담을 덜어주기 위해 나는 을 정의하기로 결정했습니다. x 벡터를 초기화하기 전에 익명 함수를 정의했을 때 벡터의 요소 인 x을 계산에 사용 했으므로 오류가 발생했습니다. 다음과 같이 익명 함수는 다음과 같습니다배열 크기가 변경되는 익명 함수
다음과 같이 불평하지 않도록 사전에 0을 할 X의 모든 요소를 초기화 내가 문제를 해결하기 위해fnc = @(i) (-100 * (x(i) - cos(h * t(i))) - sin(h * t(i)));
:
Undefined function 'x' for input
arguments of type 'double'.
을하지만, 밝혀졌다 익명의 함수를 어디에 두 었는지에 따라 솔루션을 엉망으로 만든다. 이 문제의 원인은 무엇일까요? 내 코드는 아래에서 찾을 수 있습니다. 주석 처리 된 영역을보고 익명의 함수를 구현하려는 위치를 볼 수 있습니다.
close all;
clear all;
clc;
t_s = 0; % Starting time
t_f = 1; % Finishing time
h = 0.2; % Time step
t = t_s:h:t_f;
N = (t_f - t_s)/h; % Number of time steps (excluding initial points)
% x = zeros(1, N + 1);
fnc = @(i) (-100 * (x(i) - cos(h * t(i))) - sin(h * t(i)));
x(1) = 1; % Initial condition given in the problem
x(2) = x(1) + h * fnc(1);
for in = 3:N+1
% fnc = @(i) (-100 * (x(i) - cos(h * t(i))) - sin(h * t(i)));
x(in) = x(in - 1) + (3/2) * h * fnc(in - 1) + (-1/2) * h * fnc(in - 2);
end
음 감사 설명 적으로'x'를 정의하거나 초기화하기 전에이 함수를 정의 할 수 있습니까? – Vesnog
@Vesnog 아니요,'x'가 입력으로 선언되지 않으면 :'fnc = @ (i, x) ...'함수에 대한 입력이 아닌 모든 변수를 정의해야하며 그 값은 함수와 관련하여 고정되어 있습니다. –
이제 알았습니다. 노력해 주셔서 감사합니다. 감사합니다. – Vesnog