導航:首頁 > 編程語言 > 四階龍格庫塔法matlab程序

四階龍格庫塔法matlab程序

發布時間:2023-05-06 21:29:19

1. 四階常微分龍格—庫塔法求解常微分方程的初值問題。 Matlab程序算例:用標准4級4階R-K法求解

clear,clc	%清除內存中的變數
%數值解
y=inline('x*exp(x)+2*x-1');
y(1)

%四階龍格庫塔法
y0=[-132];
[x1,y1]=ode45(@fun,[0,1],y0);
y1(end,1)%y(1)的值

functiondy=fun(x,y)
dy=zeros(3,1);
dy(1)=y(2);
dy(2)=y(3);
dy(3)=y(3)+y(2)-y(1)+2*x-3;

運行結果

ans =

3.7183

ans =

3.7183

2. matlab龍格庫塔四階求微分方程,在線等,出來立即採納!

錯誤很多:

1、函數不是這樣定義的(MATLAB中不能用f(x)作為變數名):

f(x)=a1.*exp(-((x-b1)./c1).^2)+a2.*exp(-((x-b2)./c2).^2)+a3.*exp(-((x-b3)./c3).^2);

可以用匿名函數:

f=@(x)a1.*exp(-((x-b1)./c1).^2)+a2.*exp(-((x-b2)./c2).^2)+a3.*exp(-((x-b3)./c3).^2);

而從一般微分方程的角度來說,函數應該包括兩個輸入參數,即獨立變數和狀態變數。

2、調用方式液友慧也是錯的:

Runge_Kutta('f.*f(x)',2000,126743,1,20)

'f.*f(x)'被作為函數調用(feval),而實際上顯然不存在這樣告裂的函數名或函數句柄。我不確定鬧答題主到底想要計算什麼,是f(x)*f(x)?那樣的話直接在定義函數時取平方不就行了?如果不想改定義,那也應該是這樣調用:

Runge_Kutta(@(x)f(x).*f(x),2000,126743,1,20)

3、Runge_Kutta函數也是錯的,主要是循環體裡面有問題。k1~k4的計算是錯的,太亂,懶得改了。

3. 怎麼用MATLAB寫龍格庫塔四階方程

四階龍格-庫塔塵卜明是求解常微分方程(常微分方程組)精度最高的一種數值方法。四階龍格-庫塔迭代公式為

調用方法:

clc;close all;

y0=1;

h=0.1;a=0;b=1;

[x,y] = runge_kutta(@func,y0,h,a,b);

disp('弊逗 x y')

[x',y']

x=0:0.1:1;

plot(x,y,':'),grid on

xlabel('x'),ylabel('y(x)/y』(x)');

title('函數圖');


function f = func(x,y)

f=sqrt(x+y);

end

4. 急求MATLAB編程源代碼用四階龍格庫塔法解如下微分方程 y'=y-2x/y(0<x<1),y(0)=1,步長為h=0.2

%以下另存為文件myrk4.m
function[x,y]=myrk4(ufunc,y0,h,a,b)
%參數:函數名稱,初始值向量,步長,時間起點,時間終點
n=floor((b-a)/h);%求步數
x(1)=a;%時間起點
y(:,1)=y0;%賦初值
%按龍格庫塔方法進行求解
forii=1:n
x(ii+1)=x(ii)+h;
k1=ufunc(x(ii),y(:,ii));
k2=ufunc(x(ii)+h/2,y(:,ii)+h*k1/2);
k3=ufunc(x(ii)+h/2,y(:,ii)+h*k2/2);
k4=ufunc(x(ii)+h,y(:,ii)+h*k3);
y(:,ii+1)=y(:,ii)+h*(k1+2*k2+2*k3+k4)/6;
end


以下是主程序

%y'=y-2x/y(0<x<1),y(0)=1,步長為h=0.2
fun=inline('y-2*x/y');
[t1,f1]=myrk4(fun,1,0.2,0,1);%測試時改變test_fun的函數維數,別忘記改變初始值的維數
subplot(211);plot(t1,f1)%自編函數
title('自編函數求解結果')
%用系統自帶函數ode45進行比較
[t,f]=ode45(fun,[01],1);
subplot(212);plot(t,f);title('ode45求解結果')

5. 用matlab4階龍格庫塔法畫出下面初值的圖像

你這個微分方程,初始值x,y都是0

然後dx/dtdy/dt始終是0,得到的結果肯定全部帆仿宴都是0


稍微改了一下初始值,x(0)=0.5 y(0)=0.5

h=0.1;
t=0:h:8;
z=zeros(2,length(t));%z兩行,第一行態銀x,第二行y
z(1,1)=0.5;%x0
z(2,1)=0.5;%y0
f=@(t,z)[z(1)-z(1)*z(2);-z(2)+z(1)*z(2)];
forii=1:length(t)-1
k1=f(t(ii),z(:,ii));
大裂k2=f(t(ii)+h/2,z(:,ii)+k1/2);
k3=f(t(ii)+h/2,z(:,ii)+k2/2);
k4=f(t(ii)+h,z(:,ii)+k3);
z(:,ii+1)=z(:,ii)+h*(k1+2*k2+2*k3+k4)/6;
end
R=[t'z'];
subplot(121),plot(R(:,1),R(:,2:3));
xlabel('t');legend('x','y');
subplot(122),plot(R(:,2),R(:,3));
axisequal;xlabel('x');ylabel('y');


閱讀全文

與四階龍格庫塔法matlab程序相關的資料

熱點內容
桌面雲配置文件分離 瀏覽:505
iphone5如何升級4g網路 瀏覽:5
團購是在哪個app 瀏覽:897
打開多個word文檔圖片就不能顯示 瀏覽:855
騰訊新聞怎麼切換版本 瀏覽:269
app安裝失敗用不了 瀏覽:326
桌面文件滑鼠點開會變大變小 瀏覽:536
手機誤刪系統文件開不了機 瀏覽:883
微信兔子甩耳朵 瀏覽:998
android藍牙傳文件在哪裡 瀏覽:354
蘋果6s軟解是真的嗎 瀏覽:310
c語言代碼量大 瀏覽:874
最新網路衛星導航如何使用 瀏覽:425
以下哪些文件屬於圖像文件 瀏覽:774
zycommentjs 瀏覽:414
確認全血細胞減少看哪些數據 瀏覽:265
文件有哪些要求 瀏覽:484
cad打開時會出現兩個文件 瀏覽:65
什麼是轉基因網站 瀏覽:48
手柄設備有問題代碼43 瀏覽:921

友情鏈接