matlab 循环变量与求解变量

来源:百度知道 编辑:UC知道 时间:2024/06/19 08:49:44
for 循环变量,又是sovle的未知变量!程序没有反应

clear

X=1;
Y=1.2;
W=1;
for R=1:1:20

r=2560;
v=0.2;
w=pi^2*(1/X^2+1/Y^2)
t1=1.35e-3*W^(1/6)*sqrt(R);

if t1<0.37101
g1=cos(w*t1);
g2=cos(w*t1);
G=sqrt(g1^2+g2^2);

else
G=1;

R=solve('G*0.7*(W^(1/3)/R)^3*0.5*pi^2/(1-v^2)*(1/X^2+ v/Y^2)-50','R')
R=subs(R)
end

R

遇到这种情况,循环变量与需求解的变量为同一个值该怎么处理,如果不用solve又该用什么函数处理。
你好,你的程序出不来,最后出来的R=1,没有循环得出的解!
请问您的i是放在程序中的什么位置

我不知道你要解决的问题,我只是针对你的程序,改成如下是可以运行,也可以达到你要说的目的 ,但还是没有R值,因为判断条件t1永远成立 ,也就是说,根本不会有G=1,并且计算R的机会 。

clear

X=1;
Y=1.2;
W=1;
R = [];% 初始化R
Rall = []; %初始化R的历史
for i=1:1:20

r=2560;
v=0.2;
w=pi^2*(1/X^2+1/Y^2);
if isempty(R),%如果R为空,则用正常的i,否则就用R
t1=1.35e-3*W^(1/6)*sqrt(i);
else
t1=1.35e-3*W^(1/6)*sqrt(R);
end

R = []; %t1算完了,清空R,等待下一次计算R
if t1<0.37101
g1=cos(w*t1);
g2=cos(w*t1);
G=sqrt(g1^2+g2^2);

else
G=1;

temp=solve('G*0.7*(W^(1/3)/R)^3*0.5*pi^2/(1-v^2)*(1/X^2+ v/Y^2)-50','R');
R=subs(temp);
end

Rall = [Rall R];%记录所有R的历史

end

所以,你想解的R,根本不会被解到,当然也可以是你的程序流程错了,本来应该是:

if t1<0.37101
g1=cos(w*t1);
g2=cos(w*t1);