MATLAB中如何在for循环中嵌套solve函数

当改变圆的圆心坐标时,想求两圆的交点坐标!求大神指导,我是小白一只!
代码如下:
syms x z
mask=[];
i=1;
h=0.05;
for x1=5:-0.1:1
z1=sqrt((500.5)^2-x1^2)-0.006; %定义参量z1
[x,z]=solve(x^2+z.^2==250000,(x-x1)^2+(z-z1)^2==0.25); %解两圆交点坐标
mask(i,1)=x1/12;
mask(i,2)=sqrt(x(1,1)^2+h^2)-sqrt(x(2,1)^2+h^2);
i=i+1;
end
plot(mask(:,1),mask(:,2));

题主的代码出现错误的原因,是x、y变量声明书写的位置不恰当。因为每次用solve求解时,需要重新对x、y变量声明,所以该声明必须放置for循环语句中。即
for x1=5:-0.1:1
syms x z
z1=sqrt((500.5)^2-x1^2)-0.006; %定义参量z1
[x,z]=solve(x^2+z.^2==250000,(x-x1)^2+(z-z1)^2==0.25); %解两圆交点坐标
mask(i,1)=x1/12;
mask(i,2)=sqrt(x(1,1)^2+h^2)-sqrt(x(2,1)^2+h^2);
i=i+1;
end

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-24
可以一起用,但要注意用法。如果solve的参数是字符串,需要注意把循环控制变量转换为字符串;或者换用符号表达式的方式调用solve函数。追问

我试了好久好久,不会-_-||,一直报错

本回答被网友采纳
相似回答