24小时热门版块排行榜    

CyRhmU.jpeg
查看: 518  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

若为君故*-*

新虫 (初入文坛)

[求助] 这个程序为什么一直出错已有2人参与

编了一个程序但运行出来一直显示??? Error using ==> solve
' L1*(a1./(sqrt(1-a1.^2)))=L2*(a2./(sqrt(1-a2.^2))) ' is not a valid expression or equation.
是为什么呀?
clc;clear all;
syms x y;
L1=1.1822;L2=1.2491;L3=1.2832;L4=1.3180;
t1=14.75;t2=14.85;t3=14.9;t4=14.95;
w1=[15*(t1-20+x/15)*pi]/180;
w2=[15*(t2-20+x/15)*pi]/180;
w3=[15*(t3-20+x/15)*pi]/180;
w4=[15*(t4-20+x/15)*pi]/180;
n=108;
c=2*pi.*23.45/360;
sgm=c.*sin((2.*pi.*(284+n))/365);
a1=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w1);
a2=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w2);
a3=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w3);
a4=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w4);
solve('L1*(a1./(sqrt(1-a1.^2)))=L2*(a2./(sqrt(1-a2.^2)))','L3*(a3./(sqrt(1-a3.^2)))=L4*(a4./(sqrt(1-a4.^2)))');
x=vpa(x,1);
y=vpa(y,1);
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

若为君故*-*

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by fxj126 at 2015-09-12 09:27:06
移项 转换成equation=0的形式

可以具体说一下怎么改吗?
3楼2015-09-14 18:19:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

fxj126

木虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
移项 转换成equation=0的形式
2楼2015-09-12 09:27:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fxj126

木虫 (小有名气)

【答案】应助回帖

引用回帖:
3楼: Originally posted by 若为君故*-* at 2015-09-14 18:19:16
可以具体说一下怎么改吗?...

就是移项 等式左边=0
4楼2015-09-15 08:56:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

【答案】应助回帖

MATLAB的solve求解方程,不需要移项把原方程整理为右边等于零的形式。楼主程序报错,与方程是否整理为右边等于零的形式无关。

楼主原程序存在以下两个错误:
其一,如果对MATLAB括号熟悉的话,一眼扫过就会发现,楼主原程序中:
solve('L1*(a1./(sqrt(1-a1.^2)))=L2*(a2./(sqrt(1-a2.^2)))','L3*(a3./(sqrt(1-a3.^2)))=L4*(a4./(sqrt(1-a4.^2)))');
出现了中文状态的括号,MATLAB是不能识别中文状态的字符的。
在MATLAB代码中出现中文字符,代码必然出错。

其二,MATLAB的solve函数是用于求解解析解的函数,方程中乘除幂的书写不需要也不能用点乘点除点幂的形式。可自行了解MATLAB中乘除幂和点乘点除点幂的区别。
CODE:
clc;clear all;
syms x y;
L1=1.1822;L2=1.2491;L3=1.2832;L4=1.3180;
t1=14.75;t2=14.85;t3=14.9;t4=14.95;
w1=[15*(t1-20+x/15)*pi]/180;
w2=[15*(t2-20+x/15)*pi]/180;
w3=[15*(t3-20+x/15)*pi]/180;
w4=[15*(t4-20+x/15)*pi]/180;
n=108;
c=2*pi.*23.45/360;
sgm=c.*sin((2.*pi.*(284+n))/365);
a1=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w1);
a2=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w2);
a3=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w3);
a4=sin(y)*sin(sgm)+cos(y)*cos(sgm)*cos(w4);
[x y]=solve('L1*(a1/(sqrt(1-a1^2)))=L2*9*a2/(sqrt(1-a2^2))','L3*(a3/(sqrt(1-a3^2)))=L4*(a4/(sqrt(1-a4^2)))')

最后,考虑到楼主方程组的复杂性,应该是找不到解析解的。
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2015-09-15 14:18:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见