24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1610  |  回复: 9

lkbiandou

金虫 (小有名气)

[求助] 请教一个matlab求解非线性方程组的问题

问题是:
T(i,j,1)=初值,就是整个第一页都是一样的值,请问这个该怎么处理?
现在编的程序根本无法运行起来的。各位帮帮忙,帮我看看怎么办。
拜谢各位了!


function myEquations_test
clear all ; clc;
Tin(1:10,1:10,1)=483.15;
x0=Tin(1:10,1:10,1)
T=fsolve(@TxEquations,x0);
function f = TxEquations(T)
global n F G rc dz M  i j k
clc;clear;
m=10; n=10;K=10;
Ramda = 0.45;       % W/(m K)
Kw=1.2;
Tw=483.15;
R=0.08;
x0=0.3959; dx=0.06041;
dz=0.1;
Tin=483.15;
  %反应器入口
  a5=1; a6=1; d33=2; d44=3;
%  T(:,:,;
for k=1:K;
    for j=1:n;
        for i=2:m;
            %k=1,入口位置
            T(i,j,1)=483.15;               
            %初始条件AD段的处理,i=1
            T(2,j,k)=T(1,j,k)-dx*Kw*R/Ramda*(T(1,j,k)-Tw);
            %AB段,j=1的处理
            T(i+1,1,k)=T(i,1,k)+0;
            %CD段,j=n
            T(i+1,n,k)=T(i,n,k)+0;           
            %除边界以外浓度和温度的表达式
            T(i,j,k+1)=T(i,j,k)+dz*(a5*(d33+d44)+a6);         
        end            
    end   
end
T
%--------------------------------------------------------------------------

[ Last edited by lkbiandou on 2013-7-30 at 23:04 ]
回复此楼

» 猜你喜欢

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

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

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

感谢参与,应助指数 +1
去掉子函数里的clc;clear;
showmethemoney
2楼2013-07-31 14:45:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lkbiandou

金虫 (小有名气)

引用回帖:
2楼: Originally posted by csgt0 at 2013-07-31 14:45:37
去掉子函数里的clc;clear;

版主,你好。谢谢你的帮助!
可是去掉之后还是出现了错误,能帮我再看看吗?
谢谢您了
3楼2013-07-31 15:18:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
3楼: Originally posted by lkbiandou at 2013-07-31 15:18:52
版主,你好。谢谢你的帮助!
可是去掉之后还是出现了错误,能帮我再看看吗?
谢谢您了...

function f = TxEquations(T)
的返回的f是哪个?你没有给返回值
showmethemoney
4楼2013-07-31 15:26:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lkbiandou

金虫 (小有名气)

引用回帖:
4楼: Originally posted by csgt0 at 2013-07-31 15:26:35
function f = TxEquations(T)
的返回的f是哪个?你没有给返回值...

版主,你好。
我想解决的问题是这样的,T(i,j,1)=Tin表示的是第一面的温度,也是初值,然后T(i,j,k)表示第k面上每个点的温度,他与其他温度点的关系在for语句里面了,我现在想求解的就是在初值条件下,每个面上每个点的温度,也就是T。
您看我应该怎么做呢
5楼2013-07-31 15:30:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
5楼: Originally posted by lkbiandou at 2013-07-31 15:30:04
版主,你好。
我想解决的问题是这样的,T(i,j,1)=Tin表示的是第一面的温度,也是初值,然后T(i,j,k)表示第k面上每个点的温度,他与其他温度点的关系在for语句里面了,我现在想求解的就是在初值条件下,每个面上每 ...

就是从第一层T计算剩下的9层T吗,那你直接修改子程序,不要主程序了,不需要解方程呀。不过你的for循环里问题很多,跟算法有关,得仔细调调。
showmethemoney
6楼2013-07-31 16:09:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lkbiandou

金虫 (小有名气)

引用回帖:
6楼: Originally posted by csgt0 at 2013-07-31 16:09:39
就是从第一层T计算剩下的9层T吗,那你直接修改子程序,不要主程序了,不需要解方程呀。不过你的for循环里问题很多,跟算法有关,得仔细调调。...

是的,我就是想通过第一层来计算其余各层的,那就是去掉解方程那个选项?直接用子程序处理啊?
版主您觉得for循环主要是那些问题了?
7楼2013-07-31 16:30:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

csgt0

荣誉版主 (著名写手)

彩色挂图

【答案】应助回帖

引用回帖:
7楼: Originally posted by lkbiandou at 2013-07-31 16:30:48
是的,我就是想通过第一层来计算其余各层的,那就是去掉解方程那个选项?直接用子程序处理啊?
版主您觉得for循环主要是那些问题了?...

不知道是不是这样的。主要是矩阵维数超了
CODE:
clear all ; clc;
T(1:10,1:10,1)=483.15;
m=10; n=10;K=10;
Ramda = 0.45;       % W/(m K)
Kw=1.2;
Tw=483.15;
R=0.08;
x0=0.3959; dx=0.06041;
dz=0.1;
%反应器入口
a5=1; a6=1; d33=2; d44=3;
   
for k=1:K-1;
    for j=1:n;
        for i=1:m-1;
             %k=1,入口位置
           % T(i,j,1)=483.15;               
            %初始条件AD段的处理,i=1
             T(2,j,k)=T(1,j,k)-dx*Kw*R/Ramda*(T(1,j,k)-Tw);  %变更k层第2行数据,第一层不变
             %AB段,j=1的处理
             T(i+1,1,k)=T(i,1,k)+0;           %变更k层第1列数据
             %CD段,j=n
             T(i+1,n,k)=T(i,n,k)+0;           %变更k层第n列数据
             %除边界以外浓度和温度的表达式
             T(i,j,k+1)=T(i,j,k)+dz*(a5*(d33+d44)+a6);     %当前层计算下一层     
        end            
     end   
end

showmethemoney
8楼2013-07-31 17:00:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lkbiandou

金虫 (小有名气)

引用回帖:
8楼: Originally posted by csgt0 at 2013-07-31 17:00:17
不知道是不是这样的。主要是矩阵维数超了

clear all ; clc;
T(1:10,1:10,1)=483.15;
m=10; n=10;K=10;
Ramda = 0.45;       % W/(m K)
Kw=1.2;
Tw=483.15;
R=0.08;
x0=0.3959; dx=0.06041;
dz ...

之前一直有个疑问,就是for循环的时候,i,j,k的取值范围该怎么办呢,。
我自己再尝试下,今天非常感谢你,总体来说是有温度数据出来了,比起之前那样全是错误的提示,要进步了许多了。
9楼2013-07-31 22:54:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lkbiandou

金虫 (小有名气)

引用回帖:
8楼: Originally posted by csgt0 at 2013-07-31 17:00:17
不知道是不是这样的。主要是矩阵维数超了

clear all ; clc;
T(1:10,1:10,1)=483.15;
m=10; n=10;K=10;
Ramda = 0.45;       % W/(m K)
Kw=1.2;
Tw=483.15;
R=0.08;
x0=0.3959; dx=0.06041;
dz ...

版主,您好。我现在对方程做了些修改。方程代码如下:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
m=10; n=10;K=10;
Ramda = 0.45;       % W/(m K)
Kw=1.2;
Tw=483.15;
R=0.08;
x0=0.3959; dx=0.06041; df=pi/6/10;
dz=0.1;
Tin=483.15;
  %反应器入口
  a5=1; a6=1;
  %d33=2; d44=3;
%  T(:,:,;
for k=2:K;
    for j=1:n;
        for i=1:m;
            while i<=1;
                %T(i,j,1)=483.15;
                T(1,j,k+1)=T(1,j,k)+dz*(a5*(1/(x0+i*dx)^2*(T(1,j+1,k)-2*T(1,j,k)+T(1,j-1,k))/df^2+...
                (T(2,j,k)-2*T(1,j,k)+T(1,j,k)+dx*Kw*R/Ramda*(T(1,j,k)-Tw))/dx^2+...
                1/(x0+i*dx)*(T(2,j,k)-T(1,j,k)-dx*Kw*R/Ramda*(T(1,j,k)-Tw)/(2*dx)))+a6);    %i=1的处理
            end
            while j<=1;
                T(i,1,k+1)=T(i,1,k)+dz*(a58(1/(x0+i*dx)^2*(T(i,2,k)-2*T(i,1,k)+T(i,2,k))/df^2+...
                (T(i+1,1,k)-2*T(i,1,k)+T(i-1,1,k))/dx^2+1/(x0+i*dx)*(T(i+1,1,k)-T(i-1,1,k))/(2*dx))+a6);%j=1的处理
            end
            while j>=n;
                T(i,n,k+1)=T(i,n,k)+dz*(a5*(1/(x0+i*dx)^2*(T(i,n-1,k)-2*T(i,n,k)+T(i,n-1,k))/df^2+...
                (T(i+1,n,k)-2*T(i,n,k)+T(i-1,n,k))/dx^2+1/(x0+i*dx)*(T(i+1,n,k)-T(i-1,n,k))/(2*dx))+a6);%j=n的处理
            end
            d33=1/(x0+i*dx)^2*(T(i,j+1,k)-2*T(i,j,k)+T(i,j-1,k))/df^2;
            d44=(T(i+1,j,k)-2*T(i,j,k)+T(i-1,j,k))/dx^2+1/(x0+i*dx)*(T(i+1,j,k)-T(i-1,j,k))/(2*dx);            
            T(i,j,k+1)=T(i,j,k)+dz*(a5*(d33+d44)+a6);         
        end            
    end   
end
f=T;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
就是当i=1的时候,有一个表达式,但是j,k可以随意变化的。
然后就是当j=1或者n的时候,i,k可以随意变化。
k=1的时候是初始条件,就是T(i,j,1)=483.15固定值。
在上述条件之外,T(i,j,k)有一个表达式。
版主,您看,这个方程组怎么解呢,谢谢了!版主帮帮忙了,已经为这个问题花费很久时间了
10楼2013-08-02 14:53:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lkbiandou 的主题更新
信息提示
请填处理意见