24小时热门版块排行榜    

查看: 2073  |  回复: 10

wh1125

木虫 (正式写手)

[求助] 求助:matlab求解一个方程组,其中一个方程有三角函数

方程组有5个方程,前4个方程比较简单,就是最后一个方程有三角函数,不知道该如何求解,请大神们帮帮忙啊!感激不尽!!!

我写的代码:
syms K0 K1 K2 K3 beta0 k0 n0 n1 n2 n3

k0=2*pi/0.88;
n0=3.4;
n1=3.6;
n2=3.4;
n3=3.55;
[K0 K1 K2 K3 beta0]=solve('K0^2=k0^2*n0^2-beta0^2','K1^2=k0^2*n1^2-beta0^2','K2^2=k0^2*n2^2-beta0^2','K3^2=k0^2*n3^2-beta0^2',...
    '(K1^2*K2*K3^2+K0*K3^4+K0*K1^2*K2^2+K0^2*K2*K3^2)*(tan(K3*0.2))^2=K3^2*(K0^2*K2+K0*K2^2+K0*K1^2+K1^2*K2)','K0','K1','K2','K3','beta0')
求助:matlab求解一个方程组,其中一个方程有三角函数
方程组.png

[ Last edited by wh1125 on 2013-9-26 at 09:22 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

月只蓝

主管区长 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
wh1125: 金币+28, ★★★★★最佳答案, 太感谢了!我对你的景仰犹如滔滔江水连绵不绝啊! 2013-09-26 19:12:20
function solve_nonl
clear all;clc
x0=[-7 7 7 6.5 24];
options=optimset('MaxIter',1000,'MaxFunEvals',5000);
x=fsolve(@nonl,x0,options)


function f=nonl(x)
K0=x(1);
K1=x(2);
K2=x(3);
K3=x(4);
beta0=x(5);
k0=2*pi/0.88;
n0=3.4;
n1=3.6;
n2=3.4;
n3=3.55;
f(1)=K0^2-K0^2*n0^2+beta0^2;
f(2)=K1^2-k0^2*n1^2+beta0^2;
f(3)=K2^2-k0^2*n2^2+beta0^2;
f(4)=K3^2-k0^2*n3^2+beta0^2;
f(5)=(K1^2*K2*K3^2+K0*K3^4+K0*K1^2*K2^2+K0^2*K2*K3^2)*(tan(K3*0.2))^2-(K3^2*(K0^2*K2+K0*K2^2+K0*K1^2+K1^2*K2));
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
6楼2013-09-26 18:17:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

试试1stOpt,不用初值(1stOpt不区分大小写,小写k0用k01代替):
CODE:
Constant k01=2*pi/0.88,n0=3.4,n1=3.6,n2=3.4,n3=3.55;
Function
K0^2=k01^2*n0^2-beta0^2;
K1^2=k01^2*n1^2-beta0^2;
K2^2=k01^2*n2^2-beta0^2;
K3^2=k01^2*n3^2-beta0^2;
(K1^2*K2*K3^2+K0*K3^4+K0*K1^2*K2^2+K0^2*K2*K3^2)*(tan(K3*0.2))^2=K3^2*(K0^2*K2+K0*K2^2+K0*K1^2+K1^2*K2);

k0: -9.57452012855549E-12
beta0: -24.2759432314211
k1: -8.44814217715797
k2: 7.09783257508414E-12
k3: 7.29012925007402
8楼2013-09-26 20:39:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

1stOpt是个优化计算软件,与Matlab无关,谷歌一下。
10楼2013-09-26 22:07:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

lihongyu0526

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
你有6个未知数,却只有5个方程。
2楼2013-09-26 14:46:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wh1125

木虫 (正式写手)

引用回帖:
2楼: Originally posted by lihongyu0526 at 2013-09-26 14:46:02
你有6个未知数,却只有5个方程。

没有啊,就5个未知数,那个小写k0上面已经赋值了。
3楼2013-09-26 16:03:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
wh1125: 金币+2, 有帮助, 没有解决我的问题 2013-09-26 17:41:38
ben_ladeng: 金币+1, 感谢参与 2013-09-26 19:13:25
1:Solve函数是求符号解,很多情况下符号解是无法求出的,此时可改用数值解命令fsolve;
2:5个方程却只有4个未知数(k1,k2,k3,beta0),属超越方程,无精确解;
3:如果去掉最后一个方程,可得唯一解:

beta0: 23.2021994252868
k1: -11.0612145738144
k2: -7.13998330841327
k3: -10.2041827740037
4楼2013-09-26 16:12:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wh1125

木虫 (正式写手)

引用回帖:
4楼: Originally posted by dingd at 2013-09-26 16:12:27
1:Solve函数是求符号解,很多情况下符号解是无法求出的,此时可改用数值解命令fsolve;
2:5个方程却只有4个未知数(k1,k2,k3,beta0),属超越方程,无精确解;
3:如果去掉最后一个方程,可得唯一解:

beta0 ...

有5个未知数,那个大写的K0也是未知数。
5楼2013-09-26 17:40:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wh1125

木虫 (正式写手)

引用回帖:
6楼: Originally posted by 月只蓝 at 2013-09-26 18:17:37
function solve_nonl
clear all;clc
x0=;
options=optimset('MaxIter',1000,'MaxFunEvals',5000);
x=fsolve(@nonl,x0,options)


function f=nonl(x)
K0=x(1);
K1=x(2);
K2=x(3);
K3=x(4);
beta0=x(5); ...

大神,弱弱的问一句:x0=[-7 7 7 6.5 24],这个初值你大致是怎么猜的?
7楼2013-09-26 19:20:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wh1125

木虫 (正式写手)

引用回帖:
8楼: Originally posted by dingd at 2013-09-26 20:39:37
试试1stOpt,不用初值(1stOpt不区分大小写,小写k0用k01代替):

Constant k01=2*pi/0.88,n0=3.4,n1=3.6,n2=3.4,n3=3.55;
Function
K0^2=k01^2*n0^2-beta0^2;
K1^2=k01^2*n1^2-beta0^2;
K2^2=k01^2*n2^2-be ...

请问在我这里1stOpt怎么用啊?help 1stOpt都没有这个关键字
9楼2013-09-26 21:42:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wh1125 的主题更新
信息提示
请填处理意见