| 查看: 2121 | 回复: 6 | ||
| 【悬赏金币】回答本帖问题,作者ckm0811将赠送您 10 个金币 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
[求助]
微分方程与代数方程联立,参数拟合问题求助已有1人参与
|
||
|
根据以下二式,利用最小二乘法拟合参数a,b,c,从而得到关于P的模型。 ① P=a*[(lamb/x)^b/lamb-1/lamb*(x/lamb)^(0.5b)] ② dx/dt=(1/3/c)*a*[(lamb/x)^b-(x/lamb)^(0.5b)] 其中a,b,c为待求参数。试验数据lamb和P已知,其中lamb范围为[0.91,1]。x为中间变量。 目前不知该用什么函数实现上述目的,想请大家提供一些思路。 已写程序如下,中间一段代码思路应该有问题,但不知如何改正 clear,clc close all format long; lamb=[1;0.995;0.99;0.985;0.98;0.975;0.97;0.965;0.96;0.955;0.95;0.945;0.94;0.935;0.93;0.925;0.92;0.915;0.91] %试验值lamb p=[0;-0.0166845;-0.0293383;-0.0433058;-0.0591614;-0.0761656;-0.0933141;-0.1099259;-0.1258601;-0.1414556;-0.1572909;-0.1738675;-0.1913200;-0.2092681;-0.2269212;-0.243560;-0.2595227;-0.2778129;-0.3064931]; %试验数据P %fac为未知数向量,其中元素fac(1)=a,fac(2)=b,fac(3)=c %lambv即中间变量x fun=@(fac,lamb,lambv)(fac(1)*((lamb./lambv)^fac(2)./lamb-(lambv./lamb).^(fac(2)*0.5)./lamb)); odefun=@(fac,lamb,lambv)(1/3/fac(3)*(fac(1)*((lamb./lambv)^fac(2)-(lambv./lamb)^(0.5*fac(2))))); tspan=[0.9,1]; lambv0=1; [fac,lambv]=ode45(odefun,tspan,lambv0,[]); fac0=[0.5 0.15 1]; %a,b,c初值 %最小二乘法拟合abc coefind=fminsearch(@(fac)((sum(p(:,1)-fun(fac,lamb,lambv)))^2),coeffia0,optimset('MaxFunEvals',1e10,'MaxIter',1e6)); %拟合后的理论模型 p_model=coefind(1)*((lamb./lambv)^b./lamb-1/lamb*(lambv./lamb)^(0.5b)) err1=100*(p-p_model)/p figure('color',[1 1 1]) plot(lamb,p,'-o'); hold on plot(lamb,p_model,'--'); xlabel('主伸长率λ','fontsize',10); ylabel('名义应力P1(Mpa)','fontsize',10); |
» 猜你喜欢
求2026年在台湾举行的物理和材料领域国际学术会议信息
已经有0人回复
求国际会议网站
已经有1人回复
物理学I论文润色/翻译怎么收费?
已经有59人回复
求取一些关于纳米材料和纳米技术相关的英文PPT。
已经有0人回复
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有19人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
26申博推荐:南京航空航天大学国际前沿院光学方向招收博士生!
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
6楼2021-07-19 21:40:24
独孤神宇
版主 (知名作家)
- 应助: 490 (硕士)
- 贵宾: 0.008
- 金币: 31014.8
- 散金: 802
- 红花: 122
- 沙发: 1
- 帖子: 5600
- 在线: 855.5小时
- 虫号: 3522474
- 注册: 2014-11-06
- 性别: GG
- 专业: 机械动力学
- 管辖: 计算模拟
【答案】应助回帖
感谢参与,应助指数 +1
|
一种方法是直接用哦的 ode15i 函数求解微分代数方程,然后用 非线性拟合函数 如lsqnonlin求解参数 第二种方法,将代数方程求导转化为 微分方程,然后拟合微分方程组参数 发自小木虫Android客户端 |

2楼2021-07-12 21:35:54
|
您好,我尝试了用ode15i求解,将中间部分的程序改成为下面所示,出现了报错。用ode15i求解式2时,里面的系数abc是未知的,这样可以求解出来吗,感觉自己还是不太明白该怎么做。您空闲时可以帮忙看一下程序指点一下吗 fun=@(fac,lamb,lambv)(fac(1)*((lamb./lambv)^fac(2)./lamb-(lambv./lamb).^(fac(2)*0.5)./lamb)); odefun=@(lambv,xp,fac,lamb)(xp-(1/3/fac(3))*(fac(1)*((lamb./lambv)^fac(2)-(lambv./lamb)^(0.5*fac(2))))); tspan=lamb'; lambv0=1; xp0=0; [t,lambv]=ode15i(odefun,tspan,lambv0,xp0); 报错: 索引超出数组元素的数目(1)。 出错 netBmodel2>@(lambv,xp,fac,lamb)(xp-(1/3/fac(3))*(fac(1)*((lamb./lambv)^fac(2)-(lambv./lamb)^(0.5*fac(2))))) 出错 odearguments (line 90) f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0. 出错 ode15i (line 118) odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, ... 出错 netBmodel2 (line 22) [t,lambv]=ode15i(odefun,tspan,lambv0,xp0); |
3楼2021-07-13 16:31:45
独孤神宇
版主 (知名作家)
- 应助: 490 (硕士)
- 贵宾: 0.008
- 金币: 31014.8
- 散金: 802
- 红花: 122
- 沙发: 1
- 帖子: 5600
- 在线: 855.5小时
- 虫号: 3522474
- 注册: 2014-11-06
- 性别: GG
- 专业: 机械动力学
- 管辖: 计算模拟

4楼2021-07-13 21:50:46













回复此楼