for循环和存储变量

2视图(30天)
斯蒂·詹姆斯
斯蒂·詹姆斯 2013年3月14日
你好,我写了一个for循环数变量定义在其他编码。我似乎无法让matlab承认我已经定义的向量,我相对较新的matlab和我不确定如果我有设置正确的for循环。任何帮助就太好了
这个定义daisyworld 1
函数dydt = daisyworld1 (t, y, Lt,左)
线头= interp1 (Lt、L、t);%插入的数据集在时间t (Lt, L)
dydt = (0, 0);
= ((1 y (1) - y (2)) * 0.5) + (y (1) * 0.25) + (y (2) * 0.75);%反照率
S = 917;%不变的太阳能
Z = 5.67 * 10 ^ (8);%斯蒂芬玻尔兹曼常数;
Te = ((((S *皮棉)/ Z) * (1 a)。^ (1/4)) -273;% plantary温度
B = 1 - 0.003265 * ((22.5 te)。^ 2);%β值,
g = 0.3;%死亡术语
dydt (1) = y (1) * (((1 y (1) - y (2)) * B) - g);%黑雏菊公式
dydt (2) = y (2) * (((1 y (1) - y (2)) * B) - g);%的白色雏菊公式
然后采用数值解
清晰;% daisyworldode45删除存储变量
Lt = linspace (0, 1000, 25);%为L生成t
L = Lt / 500 + 0.4;%光度函数想保持在0和2范围内变化取决于tspan
tspan = [0 1000];%求值(t)
IC = (0.2 - 0.3);%初始条件的雏菊百分比,黑白色
[T、Y] =数值(@ (T, Y) daisyworld1 (T, Y, Lt, L), tspan, IC);T和Y %解决方程,需要资本
我试图提取这些值(T)和Y,并使用向量T寻找L值,然后对Te这些情节
N = 7269;
Te = 0 (1, N);
T = 0: N
Y = 0: N
Te (T, Y) = ((917 * (T / 500 + 0.4) / (5.67 * 10 ^ (8)) * (1 - (((1 Y (1) - Y (2)) * 0.5) + (Y (1) * 0.25) + (Y (2) * 0.75)))。^ (1/4))) -273;
结束
结束
情节(T、Y);
7269是y值的数量,数值使用我越来越错误代码
未定义的函数输入参数的“y”型“双”。
错误在daisyworldode45(23行)
Te (T, Y) = ((917 * (T / 500 + 0.4) / (5.67 * 10 ^ (8)) * (1 - (((1 Y (1) - Y (2)) * 0.5) + (Y (1) * 0.25) + (Y (2) * 0.75)))。^ (1/4))) -273;
3评论
1月
1月 2013年3月14日
备注:5.67 * 10 ^(8)需要一个乘法和昂贵的幂函数。5.67 e-8解析一次m文件的阅读更有效和更好的结果。

登录置评。

接受的答案

ChristianW
ChristianW 2013年3月14日
有几种方法。我将使Plantary温度(Te)一个新函数,和vectorize反照率(a)。是这样的:
函数测试
清晰的% daisyworldode45删除存储变量
tspan = [0 1000];%求值(t)
L = @ t (t) /范围(tspan) * 2 + 0.4;%光度函数想保持在0和2范围内变化取决于tspan
IC = (0.2 - 0.3);%初始条件的雏菊百分比,黑白色
[T、Y] =数值(@ (T, Y) daisyworld1 (T Y L), tspan, IC);T和Y %解决方程,需要资本
LT = L (T);
Te = Temp (LT, Y);
次要情节(211),情节(T、Y),包含(“T、时间”),传说(“Y_1”,“Y_2”)
次要情节(212),情节(LT, Te)
包含(L (T)光度的),ylabel (“Te, Plantary温度”)
函数dydt = daisyworld1 (t y L)
dydt = (0, 0);
Lt = L (t);%计算L在时间t
Te = Temp (Lt, y);
B = 1 - 0.003265 * ((22.5 te)。^ 2);%β值
g = 0.3;%死亡术语
dydt (1) = y (1) * (((1 y (1) - y (2)) * B) - g);%黑雏菊公式
dydt (2) = y (2) * (((1 y (1) - y (2)) * B) - g);%的白色雏菊公式
函数Te = Temp (Lt, y)
如果isvector (y), y = y (:) ';结束%使行向量
= ((1 y (: 1) - y (:, 2)) * 0.5) + (y (: 1) * 0.25) + (y (:, 2) * 0.75);%反照率
S = 917;%不变的太阳能
Z = 5.67 * 10 ^ (8);%斯蒂芬玻尔兹曼常数;
Te = ((((S * Lt) / Z)。* (1 a)。^ (1/4)) -273;% plantary温度
1评论
斯蒂·詹姆斯
斯蒂·詹姆斯 2013年3月14日
非常感谢你这真的是一个很好的帮助,谢谢你花时间帮助我。

登录置评。

更多的答案(0)

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!