입력인수가 너무많다고 하는데 어떻게 할까요
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
clear,clc,close all
tspan=[0,10];
X_ini=[5,0,1];
options1=odeset('Refine',1);
options2=odeset(options1,'NonNegative',1);
[T,X]=ode45(@ask,tspan, X_ini, options2);
figure(1);
plot(T,X(:,1),'r-','LineWidth',2),hold on,
plot(T,X(:,2),'b--','LineWidth',2), plot(T,X(:,3),'k:','LineWidth',2)
xlabel('시간'),ylabel('반응량'),legend('A','B','C')
function dXdt=ask(X)
x=X(1); y=X(2);
dxdt=-2.*x.^3;
dydt=2.*x.^3-x.*y;
dzdt=x.*y;
dXdt=[dxdt;dydt;dzdt];
end
0 Kommentare
Antworten (1)
Angelo Yeo
am 14 Apr. 2024
ode45의 문서를 읽어보면 풀고자 하는 미분방정식에는 t와 y 모두 입력으로 들어가야 합니다. 아래는 문서의 설명 일부를 가져 온 것입니다.
"스칼라 t와 열 벡터 y에 대한 함수 dydt = odefun(t,y)는 f(t,y)에 대응하는 single이나 double 데이터형의 열 벡터 dydt를 반환해야 합니다. odefun은 입력 인수 t와 y 모두를 받아야만 하는데, 이는 이 중 하나가 함수에 사용되지 않더라도 마찬가지입니다."
clear,clc,close all
tspan=[0,10];
X_ini=[5,0,1];
options1=odeset('Refine',1);
options2=odeset(options1,'NonNegative',1);
[T,X]=ode45(@ask,tspan, X_ini, options2);
figure(1);
plot(T,X(:,1),'r-','LineWidth',2),hold on,
plot(T,X(:,2),'b--','LineWidth',2), plot(T,X(:,3),'k:','LineWidth',2)
xlabel('시간'),ylabel('반응량'),legend('A','B','C')
function dXdt=ask(t, X) % add "t"
x=X(1); y=X(2);
dxdt=-2.*x.^3;
dydt=2.*x.^3-x.*y;
dzdt=x.*y;
dXdt=[dxdt;dydt;dzdt];
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu 상미분 방정식 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!