24小时热门版块排行榜    

查看: 1018  |  回复: 1

xifeitt

银虫 (初入文坛)

[求助] matlab非线性方程求解fsolve怎么使用才好呢 已有1人参与

今天有一个项目要用牛顿迭代法求解初值:
cos(x1)+cos(x2)+cos(x3)=3*pi*m/4;(m=0.8)
cos(5*x1)+cos(5*x2)+cos(5*x3)=0;
cos(7*x1)+cos(7*x2)+cos(7*x3)=0;
于是我先定义了这个
function F=myfun()
syms x1 x2 x3
k1=cos(x1)+cos(x2)+cos(x3)-3*pi/5;
k2=cos(5*x1)+cos(5*x2)+cos(5*x3);
k3=cos(7*x1)+cos(7*x2)+cos(7*x3);
F=[k1;k2;k3];
end
可是我从前并没有使用过fsolve这条指令,在
function equation()
global lambda
for lambda=0:pi/50:pi/2
    x0=[0.12 0.24 0.34]*1;
    x=fsolve(@myfun,x0);
    value(N)=x(2)-x(3);
end
lambda=0:pi/50:pi/2;
plot(lambda,value)
end
里我是看着别人的例程改写的,运行结果是参数太多,第二个M函数我自己也看不大懂  
M文件在定义的时候 第一行的函数后括号内是不是应该要含上变量?可是在里面输上了x以后系统加红色波浪线提示 可能未输入参数,,
后来又发现我没有把k2=0,k3=0 的条件写到程序里 好羞愧啊发现还删不了贴2333
那就再说几句好了 问题是想用迭代法实现多次迭代求解x1,x2,x3;而x1,x2,x3的初值是自己给定的,equation里的lambda和value我也是没明白什么意思,这个for循环也没明白是用来做什么的。
又看到fsolve是基于最小二乘法对初值敏感,而我那几个输入的值是未经计算的
羞得我好想删帖
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
方程恰定,应该能解出来的吧
用复变函数
2楼2015-05-30 23:27:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xifeitt 的主题更新
信息提示
请填处理意见