一区二区三区中文国产亚洲_另类视频区第一页_日韩精品免费视频_女人免费视频_国产综合精品久久亚洲

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 了解odeset函數(shù)

了解odeset函數(shù)

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-20 20:01:50 1700481710

一、odeset函數(shù)

Matlab的ode求解器是用于解決常微分方程組(ODE)的函數(shù)。odeset函數(shù)可以使用戶控制其中大多數(shù)選項(xiàng)的值。這個(gè)函數(shù)返回一個(gè)structure。Odset結(jié)構(gòu)體可以在ODE求解器中作為參數(shù)使用。ODE求解器采用Odset中指定的選項(xiàng)的值。用法如下:

options = odeset('Name1',value1,'Name2',value2,...)

options就是返回的structure,Name1,value1等為其可選項(xiàng)與值。

如下的代碼段,指定sine函數(shù)的初值問(wèn)題求解器ode15s的舍入誤差容忍值為1e-3,絕對(duì)誤差容忍度為1e-6,并繪制結(jié)果:

tspan = [0,10]; 
y0 = 0; 
options = odeset('RelTol',1e-3, 'AbsTol', 1e-6); 
[t,y] = ode15s(@(t,y) sin(t),tspan,y0,options); 
plot(t,y)

二、odeset控制步長(zhǎng)

在ODE的數(shù)值解法中,步長(zhǎng)是決定數(shù)值穩(wěn)定性和解的精度的因素之一。ODE求解器用絕對(duì)誤差、相對(duì)誤差和幾個(gè)事件等條件進(jìn)行調(diào)整。設(shè)步長(zhǎng)和狀態(tài)的修改發(fā)生在離散塊中的固定時(shí)刻;當(dāng)狀態(tài)改變時(shí)調(diào)用事件函數(shù)。ODE求解器使用odeset函數(shù)返回的選項(xiàng)結(jié)構(gòu)來(lái)設(shè)置絕對(duì)和相對(duì)誤差容忍度、與事件相關(guān)的參數(shù)等值。下面的代碼演示使用options參數(shù)重式調(diào)整求解器ode45的默認(rèn)步長(zhǎng):

tspan = [0,10]; 
y0 = [1,0]; 
options = odeset('RelTol', 1e-6, 'AbsTol',1e-10,'MaxStep',0.1); 
[t,y] = ode45(@odefcn,tspan,y0,options); 

function dydt = odefcn(t,y) 
dydt = [y(2); -y(1)]; 
end

MaxStep選項(xiàng)是指定最大步長(zhǎng),ode45設(shè)置的默認(rèn)步長(zhǎng)為0.1左右。

三、odeset中的reltol

相對(duì)最大誤差范圍,定義為 abs(當(dāng)前步長(zhǎng)計(jì)算的值-olsolve函數(shù)返回的值) / max(atol,abs(當(dāng)前計(jì)算的值)* reltol)。定下來(lái)的認(rèn)識(shí)是在與客觀測(cè)量數(shù)據(jù)進(jìn)行比較時(shí),如果求解器成功誤差要小于設(shè)定的容忍范圍,否則算法就繼續(xù)迭代并重新計(jì)算相應(yīng)的步長(zhǎng) 在線性求解器中,誤差通常按照量表T,解向量Y和時(shí)間變量T進(jìn)行測(cè)量,通過(guò)向量來(lái)測(cè)量誤差。ODE45中reltol默認(rèn)值是1e-3:

tspan [0,30]; 
y0 = [2 0]; 
options = odeset('RelTol',1e-2); 
[t,y] = ode45(@odefcn,tspan,y0,options); 

function dydt = odefcn(t,y) 
dydt = [y(2); -y(1)]; 
end

四、ode to,odeset兩個(gè)events耦合怎么寫(xiě)

如果您要在多個(gè)例程中使用odeset選項(xiàng),則可以創(chuàng)建一個(gè)options結(jié)構(gòu),然后將它傳遞給每個(gè)例程:

options = odeset('RelTol',1e-3); 
[t1,y1] = ode45(@odefcn,tspan,y0,options); 
[t2,y2] = ode23(@odefcn,tspan,y0,options);

它可以幫助改變相同的相對(duì)誤差,即盡管它的默認(rèn)值不同。在ODE求解器中支持事件函數(shù)(式)。您可以在特定的時(shí)間進(jìn)入或離開(kāi)事件。每次輸入事件函數(shù)時(shí),必須告訴ODE求解器是否計(jì)算相應(yīng)的事件。 如果計(jì)算相應(yīng)的事件,則必須提供一個(gè)組成向量的事件結(jié)果和指示哪個(gè)事件被觸發(fā)的事件檢測(cè)向量。最后,您必須告訴ODE求解器下一個(gè)時(shí)間段的結(jié)束時(shí)間。下面的示例展示了如何使用“ode23”甚至偶數(shù)次方運(yùn)行情況:

tspan = [0 10]; 
y0 = 1; 
[D,c] = ode23(@ode1,tspan,y0,odeset('events',@ode2)); 
plot(D,c),xlabel('Time'),ylabel('Solution') 

function dy = ode1(t,y) 
dy = y; 
end 

function [value,isterminal,direction] = ode2(t,y) 
value = mod(t,2) == 0;     % 奇數(shù)次方 
isterminal = false;   %不終止迭代器 
direction = 0;    % 無(wú)方位可指定 
end 

五、odeset matlab

對(duì)于不同的求解器和問(wèn)題,ODE求解器有很多選項(xiàng)設(shè)置。在控制求解器行為方面,odeset函數(shù)是個(gè)非常重要的函數(shù)。Matlab函數(shù)庫(kù)提供的ode45、ode23、ode113、ode15s等都適用odeset函數(shù),它們都包含多個(gè)選項(xiàng)和值。以下是一個(gè)示例,其中設(shè)定求解器ode45的初始步長(zhǎng)為0.01,傭金步長(zhǎng)為0.1,相對(duì)容錯(cuò)為1e-6的絕對(duì)容錯(cuò)為1e-10:

tspan = [0,10]; 
y0 = [2,2]; 
options = odeset('IntialStep',0.01,'MaxStep',0.1,'RelTol',1e-6,'AbsTol',1e-10); 
[t,y] = ode45(@(t,y) [y(2) ; -y(1)],tspan,y0,options); 
plot(t,y(:,1))

六、ode to you

ODE(Ordinary Differential Equation)是指普路伐斯微分方程,大學(xué)數(shù)學(xué)中的常微分方程概念。數(shù)學(xué)家們對(duì)ODE這個(gè)領(lǐng)域做了很多研究,除了很多解析方法,還有很多數(shù)值求解器。比如一些經(jīng)典的方法:歐拉法、改進(jìn)歐拉法、龍格庫(kù)塔法(RK)等,它們都能幫助我們求解ODE問(wèn)題,但是數(shù)值精度和時(shí)間效率不同。ode45函數(shù)是在所有數(shù)值求解器中精度和時(shí)間效率均衡的算法。因此,ode45是求解ODE問(wèn)題的函數(shù),類似的函數(shù)還有:ode15s、ode23、ode23tb、ode113等。

七、ode to joy

在ODE求解器中,ode45函數(shù)用于求解常微分方程組,下面是一個(gè)關(guān)于ode45函數(shù)求解簡(jiǎn)單雙擺的例子:

%簡(jiǎn)單雙擺

tspan=[0,70];  % 時(shí)間范圍 
y0=[0,pi/2,pi/2,0]; %初值 

[t,y] = ode45(@fxy,tspan,y0);  % 返回時(shí)間刻度“t”和值“y”

%繪制紅色線條

line([0 2*sin(y(1,1))],[0 -2*cos(y(1,1))],'color','r') %擺錘1 
hold on 

line([2*sin(y(1,1)) 2*sin(y(1,1))+2*sin(y(1,2))],[-2*cos(y(1,1)) -2*cos(y(1,1))-2*cos(y(1,2))],'color','r') %擺錘2 
axis([-3 3 -3 3]); % 繪圖區(qū)間 
whitebg('w');  % 背景顏色 
box('on')  % 繪制邊界 
title('Double Pendulum')  % 標(biāo)題 
xlabel('x (m)')  % x軸標(biāo)簽 
ylabel('y (m)')  % y軸標(biāo)簽 

% 第一列與第三列

function dy = fxy(t,y)

 g=9.8;  % 重力加速度 
 l = 2;  % 擺桿長(zhǎng)
 dy=zeros(4,1);
 dy(1)=y(2); 
 dy(2)=(-g*2*sin(y(1))-2*sin(y(1)-y(3))*((y(4)^2)+(y(2)^2)*cos(y(1)-y(3))))/(2-l*cos(y(1)-y(3))^2); 
 dy(3)=y(4); 
 dy(4)=(2*sin(y(1)-y(3)))*((y(2)^2)+(2*g*cos(y(1))) +(y(4)^2)*cos(y(1)-y(3)))/(2-l*cos(y(1)-y(3))^2); 

八、ode to a nightingale

Matlab的ode求解器是用于解決常微分方程組(ODE)的函數(shù),odeset函數(shù)可以使用戶控制選項(xiàng)的值。ode生態(tài)系統(tǒng)中有一個(gè)很大的工具箱,可以輕松解決大多數(shù)的ODE問(wèn)題。ond45是其中一種求解器,能夠順利解決大多數(shù)的知名ODE問(wèn)題。

以下是ode45函數(shù)的代碼實(shí)現(xiàn):

tspan = [0,10]; %時(shí)間范圍 
y0 = [1, 0]; % 初值 
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-5]); %選項(xiàng) 
[t,y] = ode45(@model,tspan,y0,options); % 函數(shù)調(diào)用 

function dydt = model(t,y) 
dydt = zeros(2,1); 
dydt(1) = y(2); 
dydt(2) = -4*y(1) - 2*y(2); 
end 

plot(t,y(:,1)) 

tags: 刪除npm
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取

上一篇

C# URL編碼詳解

下一篇

data-index
相關(guān)推薦HOT
如何啟動(dòng)Kibana

一、啟動(dòng)Kibana命令啟動(dòng)Kibana最簡(jiǎn)單的方法是運(yùn)行以下命令:bin/kibana這將啟動(dòng)Kibana并將其連接到Elasticsearch實(shí)例。默認(rèn)情況下,Kibana運(yùn)行...詳情>>

2023-11-20 22:15:02
詳解atan2f函數(shù)

一、atan2返回atan2函數(shù)是C++中的數(shù)學(xué)函數(shù)之一,它的作用是計(jì)算出兩個(gè)坐標(biāo)點(diǎn)之間的夾角。在計(jì)算機(jī)圖像學(xué)領(lǐng)域中,使用atan2函數(shù)非常廣泛。在使用...詳情>>

2023-11-20 21:57:03
詳解pd.cut函數(shù)

一、pd.cut用法pd.cut()是一個(gè)用于將連續(xù)變量轉(zhuǎn)換成離散變量的函數(shù),通俗地說(shuō)就是將一組數(shù)據(jù)按照一定的規(guī)則自動(dòng)分成幾段,然后用這幾段來(lái)表示原...詳情>>

2023-11-20 21:31:50
如何完全卸載wine

一、卸載wine安裝的軟件在卸載wine之前,首先需要卸載通過(guò)wine安裝的軟件,否則這些軟件可能會(huì)影響到wine的卸載過(guò)程。卸載軟件的方法與在Window...詳情>>

2023-11-20 21:24:38
Qt時(shí)間戳轉(zhuǎn)換日期格式

一、概述Qt是一個(gè)跨平臺(tái)的GUI開(kāi)發(fā)框架,它提供了一套豐富的API,可以用C++進(jìn)行編程。在Qt中,時(shí)間戳是指一個(gè)整數(shù),代表從某個(gè)固定時(shí)間點(diǎn)經(jīng)過(guò)了...詳情>>

2023-11-20 20:59:26