matlab 循环里的方程越来越慢,各位大神,我在matlab中用for循环求解一个方程,有时候方程会没有解,此时如何让for循环继续执行下去呢?...

在MATLAB中,使用for循环求解方程时遇到无解情况,提问者询问如何让循环继续执行而不中断。解决方案包括使用`if isempty(x) continue;`语句或考虑使用`goto`标签。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各位大神,我在matlab中用for循环求解一个方程,有时候方程会没有解,此时如何让for循环继续执行下去呢?

mip版  关注:194  答案:2  悬赏:10

解决时间 2021-01-26 10:22

1061833fafb823858a9d81821943d437.png

已解决

2021-01-26 04:46

clear all

clc

syms E f w C k L1 lambada N x y A1

E=209*10^9;p=7.89*10^3;

f=24*10^3;

w=2*f*3.1415926;%圆频率

C=(E/p)^(1/2);%波在固体中的传播速度

k=w/C;

R1=0.040;R3=0.02;

lambada=C/f;

L1=2*lambada;

N=sqrt(R1^2/(R3^2));

A1=(N-1)/(N*x);

%R2=R1(1-A1*x);

B=[];

a=1;

p_num=0;

%for Mp=2.5:0.1:4

for Mp=3:0.1:4 %这里是一个for循环,每次Mp的值是可以变动的

eq=tan(k*y)-((1+1/2/(k*x)^2)*tan(k*x)-1/2/x/k)/(-1+tan(k*x)/2/k/x);

eq1=2*abs((sin(k*x)/2/x/k+cos(k*x))/cos(k*y))-Mp;

[x,y]=solve(eq,eq1,'x','y');

%If isempty(x) %%%%%就是在这里,哪条语句可以实现:当方程没有解的时候,继续返回for循环执行,换成下一个MP的值。现在的语句有问题%%%%

%Continue;

%end

if 1==isreal(y)

p_num=p_num+1;

B(a,1)=a

B(a,2)=Mp;

B(a,3)=x;

B(a,4)=y;

a=a+1;

end

end

最佳答案

6df2b90b0b1bdeaf28609d692baee87c.png

2021-01-26 05:45

if isempty(x)

continue;

end

这个不行吗?

或者直接goto label?

全部回答

20568a243ef6dd4ccccb25429d9c5f2d.png

1楼

2021-01-26 07:12

clear

syms a1 a2 b1 b2 r1 r2 t41 t42

k=0.01

n=1;

for d=0:300

for q=1:10

eq1=a1+a2+b1+b2-sqrt(2)*(1+r1);

eq2=a1-a2+b1-b2-sqrt(2)*(1+r2);

eq3=1+r1-t41;

eq4=1+r2-t42;

eq5=a1*exp(i*(q-k)*d)+a2*exp(i*(q+k)*d)+b1*exp(-i*(q+k)*d)+b2*exp(-i*(q-k)*d);

eq6=a1*exp(i*(q-k)*d)-a2*exp(i*(q+k)*d)+b1*exp(-i*(q+k)*d)-b2*exp(-i*(q-k)*d);

eq7=t41*(k-q)+r1*(q+k)+(a1*(k-q)-a2*(q+k)+b1*(q+k)+b2*(q-k))/sqrt(2)+(k-q)*t41;

eq8=t42*(-k-q)+r2*(q-k)+(a1*(k-q)+a2*(q+k)+b1*(q+k)-b2*(q-k))/sqrt(2)-(k+q)*t42;

[a01(n),a02(n),b01(n),b02(n),r01(n),r02(n),t041(n),t042(n)]=solve(eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8,a1,a2,b1,b2,r1,r2,t41,t42);

n=n+1;

end

end

disp(' a01 a02 b01 b02 r01 r02 t041 t042 ')

x=[double(a01);double(a02);double(b01);double(b02);double(r01);double(r02);double(t041);double(t042)]'

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值