ode with varying constant
古いコメントを表示
i have one differntial eqation and in that i have two constants one is scalar and one is vector i have to solve diffential equation for each value of vector means i got no of diff equation= no of elements in vector now i have to plot each solution of each de with time
function [dydt] = diffvar(t,y)
dydt=-k*y+a;
end
3 件のコメント
Ameer Hamza
2020 年 10 月 21 日
編集済み: Ameer Hamza
2020 年 10 月 21 日
What about my answer to your other question: https://www.mathworks.com/matlabcentral/answers/621608-how-to-solve-ode-if-value-of-constant-is-vector
prajyot gajbhiye
2020 年 10 月 21 日
Ameer Hamza
2020 年 10 月 21 日
That code will work even if you put one of the variable as scalar.
回答 (1 件)
Star Strider
2020 年 10 月 21 日
Interpolating a time-domain vector in a differential equation is essentially described in the ode45 (and other solvers) documentation. This simply re-states it in the context of the current problem.
Try this
ic = 0;
tspan = [0 10];
k = 42;
av = rand(1,10); % Vector Defining ‘a’
a = @(t) interp1(linspace(min(tspan),max(tspan),numel(av)), av, t); % Function Interpolating ‘a’
[T,Y] = ode45(@(t,y)diffvar(t,y,k), tspan, ic);
figure
plot(T, Y)
grid
function [dydt] = diffvar(t,y,k)
dydt=-k*y+a(t); % Call ‘a’ As A Function
end
Use your own vector for ‘av’ and your own constant for ‘k’.
カテゴリ
ヘルプ センター および File Exchange で Ordinary Differential Equations についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!