查看: 981|回复: 4|关注: 0

[已解决] matlab用solve函数解方程时不能得到数值解

[复制链接]

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
用matlab中solve函数解一个方程时给出了很多限制条件,并不能得到数值解,请问怎么解决?谢谢啦代码如下,就是公式里除了alpha其余全是已知量,为了输入一个delta的值解出一个alpha的值。

delta=10;
n_o=1.528;
n_e=1.7297;
lambda=632.8e-9;
d=30e-6;

alpha=solve('tan(alpha)=((n_e^2-n_o^2)*(((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_o^2)/(n_e^2-n_o^2))^0.5)*(((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_e^2)/(n_o^2-n_e^2))^0.5))/(n_o^2*((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_e^2)/(n_o^2-n_e^2))+n_e^2*((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_o^2)/(n_e^2-n_o^2)))','alpha');




论坛优秀回答者

5

主题

1680

帖子

472

最佳答案
  • 关注者: 140
发表于 2019-9-15 21:41:36 | 显示全部楼层
  1. alpha = vpasolve([tan(alpha)==((n_e^2-n_o^2)*(((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_o^2)/(n_e^2-n_o^2))^0.5)*(((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_e^2)/(n_o^2-n_e^2))^0.5))/(n_o^2*((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_e^2)/(n_o^2-n_e^2))+n_e^2*((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_o^2)/(n_e^2-n_o^2)))],[alpha])
复制代码


alpha = 0.083898634335274686247749002355
提问请:①准确描述问题②贴代码别贴代码的截图③勿一问多帖或一帖多问④及时反馈⑤看清回复的每个字

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2019-9-15 21:50:41 | 显示全部楼层
TouAkira 发表于 2019-9-15 21:41
alpha = 0.083898634335274686247749002355

您好,首先非常感谢您的回答,我复制了您写的代码发现了如下错误,请问是什么原因导致的?
错误提示:
错误使用 alpha
输出参数太多。

入门

154 麦片

财富积分


50500


0

主题

107

帖子

11

最佳答案
  • 关注者: 7
发表于 2019-9-16 08:26:29 | 显示全部楼层 |此回复为最佳答案
5641456 发表于 2019-9-15 21:50
您好,首先非常感谢您的回答,我复制了您写的代码发现了如下错误,请问是什么原因导致的?
错误提示:
错 ...

试一下这个:

clear;clc
syms alpha
delta=10;
n_o=1.528;
n_e=1.7297;
lambda=632.8e-9;
d=30e-6;

d = vpasolve(tan(alpha)==((n_e^2-n_o^2)*(((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_o^2)/(n_e^2-n_o^2))^0.5)*(((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_e^2)/(n_o^2-n_e^2))^0.5))/(n_o^2*((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_e^2)/(n_o^2-n_e^2))+n_e^2*((((2*pi*d*n_o*n_e)/((2*pi*d*n_o+delta*lambda)*cos(alpha)))^2-n_o^2)/(n_e^2-n_o^2))),alpha)

新手

7 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2019-9-16 10:12:05 | 显示全部楼层
chuyanwu2012 发表于 2019-9-16 08:26
试一下这个:

clear;clc

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

本版积分规则

关闭

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

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