k******o 发帖数: 61 | 1 【 以下文字转载自 Physics 讨论区 】
发信人: kafeimao (咖啡毛), 信区: Physics
标 题: 一个关于用matlab解微分方程的小问题 (转载)
发信站: BBS 未名空间站 (Sun May 8 17:53:36 2011, 美东)
发信人: kafeimao (咖啡毛), 信区: Mathematics
标 题: 一个关于用matlab解微分方程的小问题
发信站: BBS 未名空间站 (Sun May 8 17:29:15 2011, 美东)
大家好,我要用matlab做变系数微分方程组的参数拟合,参考其他论坛上的教程,我修
改了自己的程序如下:
function dy=dydt(t,y,k)
dy=zeros(2,1)
dy(1)=0.0321*k(1)*(k(2)-y(1))-k(3)*y(1)-y(2)
dy(2)=0.25*k(4)*exp(-k(4)*t)*k(2);
function y=numcal(k,x)
global y0
tspan=[0 max(x)];
[m,n]=size(x);
[tt yy] = ode23s(@... 阅读全帖 |
|
k******o 发帖数: 61 | 2 大家好,我要用matlab做变系数微分方程组的参数拟合,参考其他论坛上的教程,我修
改了自己的程序如下:
function dy=dydt(t,y,k)
dy=zeros(2,1)
dy(1)=0.0321*k(1)*(k(2)-y(1))-k(3)*y(1)-y(2)
dy(2)=0.25*k(4)*exp(-k(4)*t)*k(2);
function y=numcal(k,x)
global y0
tspan=[0 max(x)];
[m,n]=size(x);
[tt yy] = ode23s(@dydt,tspan,y0,[],k);
yc=spline(tt',yy',x);
y=yc;
主程序
clc;clear;
global y0
xdata=[1,2,3,4];ydata=[3,4,5,6];
k0=[0,0,0,0,];%要识别参数的初始值
lb=[0,0,0,0];%要识别参数的下限
ub=[6.5,5,6];%要识别参数的上限;课根据参数的范围自己设定。
options=optimset('TolFun',1e-20,'TolX',1e-20,'MaxFunE... 阅读全帖 |
|
k******o 发帖数: 61 | 3 【 以下文字转载自 Mathematics 讨论区 】
发信人: kafeimao (咖啡毛), 信区: Mathematics
标 题: 一个关于用matlab解微分方程的小问题
发信站: BBS 未名空间站 (Sun May 8 17:29:15 2011, 美东)
大家好,我要用matlab做变系数微分方程组的参数拟合,参考其他论坛上的教程,我修
改了自己的程序如下:
function dy=dydt(t,y,k)
dy=zeros(2,1)
dy(1)=0.0321*k(1)*(k(2)-y(1))-k(3)*y(1)-y(2)
dy(2)=0.25*k(4)*exp(-k(4)*t)*k(2);
function y=numcal(k,x)
global y0
tspan=[0 max(x)];
[m,n]=size(x);
[tt yy] = ode23s(@dydt,tspan,y0,[],k);
yc=spline(tt',yy',x);
y=yc;
主程序
clc;clear;
global y0
xdata=[1,2,3,4];ydata=data[3,4,5,... 阅读全帖 |
|
k******o 发帖数: 61 | 4 【 以下文字转载自 Mathematics 讨论区 】
发信人: kafeimao (咖啡毛), 信区: Mathematics
标 题: 一个关于用matlab解微分方程的小问题
发信站: BBS 未名空间站 (Sun May 8 17:29:15 2011, 美东)
大家好,我要用matlab做变系数微分方程组的参数拟合,参考其他论坛上的教程,我修
改了自己的程序如下:
function dy=dydt(t,y,k)
dy=zeros(2,1)
dy(1)=0.0321*k(1)*(k(2)-y(1))-k(3)*y(1)-y(2)
dy(2)=0.25*k(4)*exp(-k(4)*t)*k(2);
function y=numcal(k,x)
global y0
tspan=[0 max(x)];
[m,n]=size(x);
[tt yy] = ode23s(@dydt,tspan,y0,[],k);
yc=spline(tt',yy',x);
y=yc;
主程序
clc;clear;
global y0
xdata=[1,2,3,4];ydata=data[3,4,5,... 阅读全帖 |
|
j*p 发帖数: 115 | 5 Don't know why but if you don't use vector, then it works.
function y=numcal(k,x)
x=0:0.1:1;
k1 =1; k2=2; k3=3; k4=4;
y0 = [1 1];
tspan=[0 max(x)];
[tt yy] = ode45(@dydt,tspan,y0,[],k1,k2,k3,k4);
yc=spline(tt',yy',x);
y=yc;
function dy=dydt(t,y,k1,k2,k3,k4)
dy=zeros(2,1);
dy(1)=0.0321*k1*(k2-y(1))-k3*y(1)-y(2);
dy(2)=0.25*k4*exp(-k4*t)*k2; |
|