問題:如何將for迴圈每次運算結果(數據與圖形)都顯示出來 已回收
你好!想請問下列程式的寫法問題在哪?謝謝你!
想要的數據是要有i=1~4 fprintf的顯示(每次回圈的結果)與figure(1~4)四張圖
但程式執行後只顯示i=4的結果,前三次皆被覆蓋掉了,亦只有figure(4)一 張圖
要如何修改才能得到預期中的結果?
(程式省略了方程式的code)
clear
clc
close all
global x i
n=[0.1:0.1:0.4];
m=length(n);
for i=1:m
n0=n(i);
options=optimset('display','none','TolFun',1e-4,'Tolx',1e-4);
[z,favl,exitflag,output]=fminunc(@objfunone,n0,options);
sumx0=x(1,1)+x(1,2)+x(1,3);%檢查最佳化後的ivp結果
x0=[x(1,1) x(1,2) x(1,3)];%檢查最佳化後的ivp結果
fprintf('n0=%6.4f\n',n0)
fprintf('exitflag=%6.4f\n',exitflag)
fprintf('求解初始值x1=%6.4f\n\t\tx2=%6.4f\n\t\tx3=%6.4f\n 初始值總和
=%6.4f\n',x0,sumx0)
fprintf('最佳起始猜值x1=%6.4f\n',z)
disp('理論上求解初始值x1=最佳起始猜值x1')
end
function obj=objfunone(n)
global x i
clc
close all
M=[1 0 0
0 1 0
0 0 0];
tspan=[0 20];
x0=[n 0.1 0.1];%for dae
y0=[0.8 0.1];%for ode
options=odeset('Mass',M);
[t1,x]=ode15s(@fundae1,tspan,x0,options);
[t2,y]=ode45(@funode1,tspan,y0);
nx=length(t1);%計算x1cal
%%%%%%%%%%%%%%%%%%%%
%畫圖
x1=x(:,1);
x2=x(:,2);
x3=x(:,3);%dea solution
y1=y(:,1);
y2=y(:,2);
y3=1-y1-y2;%ode solution
figure(i)
plot(t1,x1,t1,x2,t1,x3)
legend('x1','x2','x3')
hold on
plot(t2,y1,'o',t2,y2,'o',t2,y3,'o')%ode solution 為點狀圖
hold off
x1t=0.02893;%x1終點值
x1cal=x(nx,1);%x1計算比較值
obj=((x1t-x1cal)/x1t)^2;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.119.66
→
06/18 01:01, , 1F
06/18 01:01, 1F
→
06/19 15:23, , 2F
06/19 15:23, 2F