24小时热门版块排行榜    

查看: 817  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zw073916

木虫 (著名写手)

[求助] 求助Matlab编程,万分感谢 已有1人参与

有2组数:
x: 0 10 40 110 155 215 310 410 505 605 700 800 900
y: 0 0.00468 0.00704 0.00996 0.01132 0.01308 0.01568 0.01868 0.02148 0.02468 0.02828 0.03292 0.03888
用方程 y’=(p(1)*sinh((p(2)*130*(1-p(5)*(1-exp(-(p(4)*y/(p(5)*130))))))/(((1+p(6)*x)^(-1/3))*(1-p(3)*y)))) 进行拟合
求解参数P(1)-p(6)?
y'为y的导数,上面方程可以表示为y'=f(x,y)由于这是个隐函数,用origin拟合不了,据说可以用matlab用最小二乘法进行非线性拟合,可是我不会。哪位大牛能帮忙把程序写一下?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zw073916

木虫 (著名写手)

引用回帖:
2楼: Originally posted by 月只蓝 at 2016-05-14 23:15:42
MATLAB代码参见:http://muchong.com/bbs/viewthread.php?tid=7603645

请问您可不可以帮我修改后发给我啊
4楼2016-05-16 18:14:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
zw073916: 金币+100, ★★★★★最佳答案 2016-05-16 08:41:48
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2016-05-14 23:15:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zw073916

木虫 (著名写手)

引用回帖:
2楼: Originally posted by 月只蓝 at 2016-05-14 23:15:42
MATLAB代码参见:http://muchong.com/bbs/viewthread.php?tid=7603645

我按照你给我的代码修改后,怎么计算不了

clear all;clc
format long
tspan=[20 50 120 165 225 320 420 515 615 710 810 910]-10;
yexp=[0.00468 0.00704 0.00996 0.01132 0.01308 0.01568 0.01868 0.02148 0.02468 0.02828 0.03292 0.03888]';

k0=[1 1 1 1 1 1];   %%%请注意这里,初值的选取

y0=0;
lb=-[1 1 1 1 1 1]*1e3;
ub=[1e12 1e9 1e6 1000 10 1];   
yy=[y0 yexp'];

[k,resnorm,residual,exitflag,output,lambda,jacobian] = ...
    lsqnonlin(@ObjFunc,k0,lb,ub,[],tspan,y0,yexp);
fprintf('\n\n使用函数lsqnonlin()估计得到的参数值为:\n')
fprintf('\t待拟合参数 k1 = %.6f\n',k(1))
fprintf('\t待拟合参数 k2 = %.6f\n',k(2))
fprintf('\t待拟合参数 k3 = %.6f\n',k(3))
fprintf('\t待拟合参数 k4 = %.6f\n',k(4))
fprintf('\t待拟合参数 k5 = %.6f\n',k(5))
fprintf('\t待拟合参数 k6 = %.6f\n',k(6))
fprintf(' \t残差平方和= %.6f\n\n',resnorm)
ts=0:1:max(tspan);

[ts ys]=ode45(@KineticsEqs,ts,y0,[],k);
[ttt XXsim] = ode45(@KineticsEqs,tspan,y0,[],k);
y=XXsim(2:end);
xexp=yexp;
R2=1-sum((xexp-y).^2)./sum((xexp-mean(y)).^2);
fprintf('\n\t决定系数R-Square = %.6f',R2);
figure(1)
plot(ts,ys,'b',tspan,yy,'or'),legend('计算值','实验值','Location','best');
yr=y-yexp;
figure(2)
plot(tspan(2:end),yr,'r*',[-100 1000],[0 0]),axis([-100 1000 -50 50]);
figure(3)
plot(yexp,y,'ro',[0 0.05],[0 0.05],'b-');

%---------------------------------------------------------
function f = ObjFunc(k,tspan,y0,yexp)           
[t Xsim] = ode45(@KineticsEqs,tspan,y0,[],k) ;
ysim = Xsim(2:end);
size(ysim);
size(yexp);
f=ysim-yexp;
%----------------------------------------------------------

function dydt = KineticsEqs(t,y,k)
beta(1)=k(1);
beta(2)=k(2);
beta(3)=k(3);
beta(4)=k(4);
beta(5)=k(5);
beta(6)=k(6);
dydt = (beta(1)*sinh((beta(2)*130*(1-beta(5)*(1-exp(-(beta(4)*y/(beta(5)*130))))))/(((1+beta(6)*t)^(-1/3))*(1-beta(3)*y))));
3楼2016-05-16 18:12:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见