查看: 206|回复: 6|关注: 0

[已解决] 使用while循环时,在给变量值的条件下,陷入死循环,不知道哪里出问题了?请教,感谢!

[复制链接]

新手

7 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
close all;clear; clc; dbstop if error;
tc=34.6;
dc=0.025;
ps=101325;
ti=36.497;
r=2260;
N=33600;
m=1.5;
y=0.06;
tsol=43.06;
p=1.29;
L=63.33;
Cp=1030;
K=0.5;
A=2092;
while ti>=28
    [ts,fval]=fsolve(@(ts)ts-tc+(exp((-5800.2)/(ts+273)+1.39-0.049*(ts+273)+0.42*10^(-4)*(ts+273)^2+(-0.145)*10^(-7)*(ts+273)^3+6.55*log(ts+273))-(dc*ps)/(0.622+dc))/(ps*0.00067),2);
    dc=dc-0.2*1.004*(tc-ts)/r;%1.004为定压比热容,单位(kJ/kg*℃)
    tc=tc-0.8*(tc-ts);
    [ti,fval]=fsolve(@(ti)ti-tc-(N.*((0.67*(1000+20*(20-ti))-(9.8e-08).*ti^.6)*((6.25.*m.^0.75+25.*y)/1000))+K.*A.*(tsol-ti))./(p.*L.*Cp),2);
end

MATLAB 基础讨论
版块优秀回答者

入门

124 麦片

财富积分


50500


3

主题

185

帖子

24

最佳答案
  • 关注者: 7
发表于 3 天前 | 显示全部楼层 |此回复为最佳答案
从程序上看,你的while条件设置的有问题,我运行了你的程序,发现ti的值最后稳定在31点多,根本不可能打到你的条件,建议你把28调成32

新手

7 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
 楼主| 发表于 3 天前 | 显示全部楼层
Leedear 发表于 2019-12-2 16:29
从程序上看,你的while条件设置的有问题,我运行了你的程序,发现ti的值最后稳定在31点多,根本不可能打到 ...

谢谢您,您的意思是是条件值设定的问题,并不是其他地方的问题是吗?我刚刚拿着您说的改了设定值,是可以的,但是我的目的是想达到这个设定条件28,所以这个应该就是我下面计算式存在的问题了是吗?

MATLAB 基础讨论
版块优秀回答者

入门

124 麦片

财富积分


50500


3

主题

185

帖子

24

最佳答案
  • 关注者: 7
发表于 3 天前 | 显示全部楼层
Blue小布丁 发表于 2019-12-2 16:41
谢谢您,您的意思是是条件值设定的问题,并不是其他地方的问题是吗?我刚刚拿着您说的改了设定值,是可以 ...

是的,应该是这样的,你在while循环里面可以设置一个变量来存储ti值,这样可以在中间中断把ti的图画出来,根据这个结果调整程序。

新手

7 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
 楼主| 发表于 3 天前 | 显示全部楼层
Leedear 发表于 2019-12-2 16:44
是的,应该是这样的,你在while循环里面可以设置一个变量来存储ti值,这样可以在中间中断把ti的图画出来 ...

emm,想问一下您,这个怎么在while循环中设置这个变量存储并画出来呢?

MATLAB 基础讨论
版块优秀回答者

入门

124 麦片

财富积分


50500


3

主题

185

帖子

24

最佳答案
  • 关注者: 7
发表于 3 天前 | 显示全部楼层
Blue小布丁 发表于 2019-12-2 16:54
emm,想问一下您,这个怎么在while循环中设置这个变量存储并画出来呢?

你在while循环前temp=[];
while循环中第一行temp=[temp;ti]
这样就可以了

新手

7 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
 楼主| 发表于 3 天前 | 显示全部楼层
Leedear 发表于 2019-12-2 17:27
你在while循环前temp=[];
while循环中第一行temp=[temp;ti]
这样就可以了

感谢感谢!!1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表