1樓:高等數學答案
先定義個函
bai數:
function f=fffff(t,y)f=[y(2);cos(y(1))];
然後du
[t,y]=ode45(@fffff,[0,2],[0,0]);
plot(t,y(:,1),'r',t,y(:,2),'b')即可。我給你設了初值zhi【0,0】,你可以自己定dao義。紅線版為y,藍線為y'.
你先把權上面的函式fffff寫成m檔案,儲存到你的matlab工作目錄裡,然後再在命令視窗輸入:
[t,y]=ode45(@fffff,[0,2],[0,0]);
plot(t,y(:,1),'r',t,y(:,2),'b')我作過,能做出影象的。
matlab求解微分方程並畫圖 20
2樓:李修靈
看標題以為你要求微分方程吶,結果是畫dr/dr vs. r
% 畫出圖中的公式
% 定義微分方程函式
drdr = @(r) 0.89 ./ r .* exp(-(log(r) + 0.84).^2 / 0.086);
% 在(0, 10]上畫圖
r = linspace(0.01, 3, 500);
dr = drdr(r);
figure(10);
plot(r, dr, '^b', 'marke***cecolor', 'blue', 'displayname', 'dr/dr vs r');
xlabel('r', 'fontsize', 16);
ylabel('dr/dr', 'fontsize', 16);
legend('show');
作圖的結果是
這是一個一階線性微分方程, 可以用龍格庫塔求解. 首先用一個.m檔案
定義圖中的微分方程. 然後再用matlab的ode45函式求解這個方程.
舉個例子, 建立一個solvef**.m的檔案如下
% 呼叫matlab的`ode45`函式實現求解. 具體說明在
% matlab命令列中輸入`doc ode45`查詢.
% 簡單來說, 需要兩步. 1) 微分方程定義; 2) ode45引數設定和呼叫.
% 具體如下.
% 設定ode45引數, 並呼叫求解微分方程`dr = odefunc(r, r)`. 該方程定義
% 見後一個函式.
function solution = solvef**(initial_value)
% initial_value = [r0, r0];
r0 = initial_value(1);
r0 = initial_value(2);
% 由於提供的初值[r0 r0] = [0.43 0.5]; 或 [0.55 0.9]. 如果求解區間從(0, 10]
% 那麼需要分成(0 r], [r, 10]兩部分求解.
% [r0, 10]上求解
sol1 = ode45(@odefunc, [r0 10], r0);
% (0, r0]上求解
sol2 = ode45(@odefunc, [r0 0.01], r0); % log(r)在0處inf, 所以用0.01代替.
% sol結構體是微分方程的解, 包含`r` - 自變數, `r` - 要求解的函式r(r)
% 的數值. 其它r對應的r值, 可以用 `r = deval(sol, r);`計算. 其結果與
% sol中儲存的r, r(r)相對精度一致.
solution.sol1 = sol1;
solution.sol2 = sol2;
end% 定義微分方程. 用dr表示dr/dr. 一階線性微分方程的一般形式為dr = f(r, r)
% 儘管題目微分方程右邊未出現r, 此變數也不可省略.
function dr = odefunc(r, r)
dr = 0.89 ./ r .* exp(-(log(r) + 0.84).^2 / 0.086);
end這個函式的作用就是求解最後幾行定義的 dr/dr = f(r, r)這個微分方程. 解存在sol結構體中.(這個例子是在sol1和sol2裡面)
怎麼用這個sol解具體算每個r處的r呢, 需要用到deval. 可以再建立一個main_0.m檔案, 內容為
% 呼叫函式sovlef**. 求解微分方程
% 初值 r= 0.43, r = 0.5
s1 = solvef**( [0.43 0.5] );
% 繪圖
r1 = linspace(0.01, 0.43, 50);
r1 = deval(s1.sol2, r1);
r2 = linspace(0.43, 2, 50);
r2 = deval(s1.sol1, r2);
r = [r1, r2]; % 在 0.01 - 2上的解
r = [r1, r2]; % 在 0.01 - 2上的解
figure(1); hold on;
plot(r, r, 'b-', 'linewidth',2, 'displayname', 'r=0.43, r=0.5');
% 初值 r=0.55, r = 0.9
s2 = solvef**( [0.55 0.9] );
% 繪圖
r1 = linspace(0.01, 0.55, 50);
r1 = deval(s2.sol2, r1);
r2 = linspace(0.55, 2, 50);
r2 = deval(s2.sol1, r2);
r = [r1, r2]; % 在 0.01 - 2上的解
r = [r1, r2]; % 在 0.01 - 2上的解
figure(1); hold on;
plot(r, r, 'r-', 'linewidth',2, 'displayname', 'r=0.55, r=0.9');
legend('show')
xlabel('r', 'fontsize', 16);
ylabel('\int_0^r dr', 'fontsize', 16)
那麼這個微分方程在不同的初值條件下的解, 就可以畫成下圖
3樓:華凡劍春竹
如何用matlab求解微分方程並畫圖,可以先用dsolve()或ode()求出其微分方程(組)的解析解或數值解,然後用plot()繪製其圖形。
例如:解微分方程 y'=y-2t/y,y(0)=1,0 3、當然嘍,使用dsolve()或ode()求解要根據題意去分析,來決定用那個函式。一般來說,用ode45求解微分方程(組)的數值解用點比較多。 4樓:莫悟軒轅良俊 syms tv=dsolve('dv=(190.708-90.64*v^2)/47.27','v(0)=0','t'); t=0:0.00001:0.002; v=eval(v); plot(t,v) 使用這樣的方法求解,但從結果看好像你的方程有問題! 用matlab求一個微分方程的數值解,並畫出解曲線 5樓:匿名使用者 syms x y t; s=dsolve('dx=-10*x+10*y','dy=28*x-y-x*z','dz=-8/3*z+x*y','x(0)=0','y(0)=0','z(0)=1','t'); x=s.x y=s.y z=s.z hold on; ezplot(x); ezplot(y); ezplot(z); %祝樓主學有所 成 嘿嘿 matlab解微分方程數值解並畫圖,求**,謝謝y 6樓:匿名使用者 這個我會,數值解可用ode45求解然後畫圖 不可能對,您的理解有問題,沒明白全微分方程的實質。全微分方程實際上是方程可以寫成d f x,y 0的形式,然後對兩邊同時取積分,解得f x,y c為原方程的解,例如2xdx 3y 2 方程可以化為d x 2 d y 3 0等價於d x 2 y 3 0直接積分得x 2 y 3 c,因此原方程也可以直接... 1.先解齊線性方程 xy 1 x y 0的通解,得到 y ce x lnx c為 任意常數 其次利用常數變易法求非齊線性方程 xy 1 x y e 2x 的通解,把c看成是 c x 微分 後將其代入原方程得到xe x lnx c x e 2x 所以c x e x c1,c1為任意常數 從而原方程的通... 解法中有問題,是需要帶絕對值符號的,只是在最後一步可以把絕對值符號去掉。還有我真的很想吐槽糾結是c還是lnc的事,請你搞清楚,不定積分中c是任意常數,既然是個任意常數,我一定要用字母c來表示嗎?lnc不也是任意常數?我甚至可以用abdefg,你要搞清楚任意常數的定義好嗎?根據泰勒公式 f x h f...關於全微分方程,關於全微分方程的解
2道高數解微分方程題求解,在高數解微分方程的時候,全微分方程的求解公式是怎麼來的?望達人告知一下推導過程!感激不盡!
關於解微分方程的一道問題,關於微分方程解的結構的一道題目疑問