weixin_58304707 2022-11-09 12:18 采纳率: 100%
浏览 118
已结题

matlab 扩散方程求系数

目前我在研究一种材料的在高温湿环境的透湿情况,分别在不同时间不同材料的位置测出来了含水量,时间t、位置x、含水量c是符合菲克第二定律,希望指导如何编程求出公式里面的系数D,测量的数据如图

img

img

  • 写回答

4条回答 默认 最新

  • 爱学习的呆子 2022-11-09 13:52
    关注

    1.因为是4种材料,所以对源数据重新排列

    img


    2.分别计算4种材料的扩散系数,思路为,计算c对t的偏导—计算c对x的二阶偏导—计算扩散系数D

    clc
    clear
    %% 计算第一种材料
    %读取数据
    t1=xlsread('1.xlsx','A2:A5');
    x1=xlsread('1.xlsx','B2:B5');
    c1=xlsread('1.xlsx','C2:C5');
    
    %计算c对t的偏导
    dc1=[c1(2)-c1(1),c1(3)-c1(2),c1(4)-c1(3)];
    dt1=[t1(2)-t1(1),t1(3)-t1(2),t1(4)-t1(3)];
    dc_t1=dc1./dt1;
    
    %计算c对x的二阶偏导
    dx1=[x1(2)-x1(1),x1(3)-x1(2),x1(4)-x1(3)];
    dc_x1=dc1./dx1;
    
    ddc_x1=[dc_x1(2)-dc_x1(1),dc_x1(3)-dc_x1(2)];
    ddx1=[dx1(2)-dx1(1),dx1(3)-dx1(2)];
    ddc_x1=ddc_x1./ddx1;
    
    %计算材料1的扩散系数D
    D11=dc_t1(1)/ddc_x1(1)
    D12=dc_t1(2)/ddc_x1(2)
    
    %% 计算第二种材料
    %读取数据
    t2=xlsread('1.xlsx','A7:A10');
    x2=xlsread('1.xlsx','B7:B10');
    c2=xlsread('1.xlsx','C7:C10');
    
    %计算c对t的偏导
    dc2=[c2(2)-c2(1),c2(3)-c2(2),c2(4)-c2(3)];
    dt2=[t2(2)-t2(1),t2(3)-t2(2),t2(4)-t2(3)];
    dc_t2=dc2./dt2;
    
    %计算c对x的二阶偏导
    dx2=[x2(2)-x2(1),x2(3)-x2(2),x2(4)-x2(3)];
    dc_x2=dc2./dx2;
    
    ddc_x2=[dc_x2(2)-dc_x2(1),dc_x2(3)-dc_x2(2)];
    ddx2=[dx2(2)-dx2(1),dx2(3)-dx2(2)];
    ddc_x2=ddc_x2./ddx2;
    
    %计算材料2的扩散系数D
    D21=dc_t2(1)/ddc_x2(1)
    D22=dc_t2(2)/ddc_x2(2)
    
    %% 计算第三种材料
    %读取数据
    t3=xlsread('1.xlsx','A12:A15');
    x3=xlsread('1.xlsx','B12:B15');
    c3=xlsread('1.xlsx','C12:C15');
    
    %计算c对t的偏导
    dc3=[c3(2)-c3(1),c3(3)-c3(2),c3(4)-c3(3)];
    dt3=[t3(2)-t3(1),t3(3)-t3(2),t3(4)-t3(3)];
    dc_t3=dc3./dt3;
    
    %计算c对x的二阶偏导
    dx3=[x3(2)-x3(1),x3(3)-x3(2),x3(4)-x3(3)];
    dc_x3=dc3./dx3;
    
    ddc_x3=[dc_x3(2)-dc_x3(1),dc_x3(3)-dc_x3(2)];
    ddx3=[dx3(2)-dx3(1),dx3(3)-dx3(2)];
    ddc_x3=ddc_x3./ddx3;
    
    %计算材料3的扩散系数D
    D31=dc_t3(1)/ddc_x3(1)
    D32=dc_t3(2)/ddc_x3(2)
    
    %% 计算第四种材料
    %读取数据
    t4=xlsread('1.xlsx','A17:A20');
    x4=xlsread('1.xlsx','B17:B20');
    c4=xlsread('1.xlsx','C17:C20');
    
    %计算c对t的偏导
    dc4=[c4(2)-c4(1),c4(3)-c4(2),c4(4)-c4(3)];
    dt4=[t4(2)-t4(1),t4(3)-t4(2),t4(4)-t4(3)];
    dc_t4=dc4./dt4;
    
    %计算c对x的二阶偏导
    dx4=[x4(2)-x4(1),x4(3)-x4(2),x4(4)-x4(3)];
    dc_x4=dc4./dx4;
    
    ddc_x4=[dc_x4(2)-dc_x4(1),dc_x4(3)-dc_x4(2)];
    ddx4=[dx4(2)-dx4(1),dx4(3)-dx4(2)];
    ddc_x4=ddc_x4./ddx4;
    
    %计算材料4的扩散系数D
    D41=dc_t4(1)/ddc_x4(1)
    D42=dc_t4(2)/ddc_x4(2)
    

    3.得到结果

    img


    (因为每种材料有4组数据,公式为二阶偏微分,所以每种材料会得到两个扩散系数,具体用哪个或者怎么处理看题主后续工作)
    (我也是材料专业的,因为代码是临时写的,没有加注释,看不明白的地方,私聊)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 11月24日
  • 已采纳回答 11月16日
  • 修改了问题 11月9日
  • 赞助了问题酬金50元 11月9日
  • 展开全部

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab