입력인수가 너무많다고 하는데 어떻게 할까요
25 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (1)
Angelo Yeo
le 14 Avr 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 commentaires
Voir également
Catégories
En savoir plus sur 상미분 방정식 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!