qingfengfeiyi 发表于 2010-5-5 20:06

请求编写一段小程序

在方程x=a+sqrt(1+k^2-2*k*cos(s))+0.7*sqrt(1+k^2-2*k*cos(s))]*cos(5*s)中,x,a,k都是已知的,如何用MATLAB求解's'?

maigicku 发表于 2010-5-6 08:41

help fsolve or fzero

qingfengfeiyi 发表于 2010-5-6 21:04

我好像没说清楚,x,a,k都是已知变量,不能直接带到公式中。如果这样怎么解

ChaChing 发表于 2010-5-6 23:01

建议楼主说具体些
syms x a k s
ff=a+sqrt(1+k^2-2*k*cos(s))+0.7*sqrt(1+k^2-2*k*cos(s))*cos(5*s)-x;
fff=subs(ff,{x,a,k},{20,1,1}),ezplot(fff,[-100,100]); pause %% 可能无解 ??
fff=subs(ff,{x,a,k},{2,1,1}), ezplot(fff) % 可能无限多解 ??

qingfengfeiyi 发表于 2010-5-7 09:21

谢谢,好的。我想编写一段程序。其中原方程如下:
x=*sin((1-ih)*s)+a/(rp-rp1)*(rp-rp1-zp*(rrp+rrp1)*(1+k^2-2*k*cos(s)))*sin(ih*s)。
式子中rp rrp zp zc a都是固定的已知变量,而ih=zp/zc也是已知的固定变量。
x rp1和rrp1是可变的变量,每次调用公式时计算时都要代入不同的数值,k=a*zp/(rp-rp1),随着rp1的变化而变化。
我现在想利用上边的公式,根据x rp1和rrp1的每次变化求出相应的s。
试了很多次,都没有进展,只好求助各位高手了。

ttc20065141 发表于 2010-5-7 13:12

原帖由 qingfengfeiyi 于 2010-5-7 09:21 发表 http://www.chinavib.com/forum/images/common/back.gif
谢谢,好的。我想编写一段程序。其中原方程如下:
x=*sin((1-ih)*s)+a/(rp-rp1)*(rp-rp1-zp*(rrp+rrp1)*(1+k^2-2*k*cos(s)))*sin(ih*s)。
式子中rp rrp zp zc a都是固定的已 ...

我不知道你的x rp1和rrp1是怎么变化,所以我就试了一个值,如图所示。如果x rp1和rrp1都是同维数的向量,你可以建立一个同维数的空向量来s0,然后用循环求出不同的x rp1和rrp1所对应的是s,然后存在s0相应的位置。

qingfengfeiyi 发表于 2010-5-7 21:43

谢谢楼上高手。
看了你的提示后,我按照当初的思路编写了一段程序,可是运行不出来。老是提示如下错误:
??? Error using ==> sym.mtimes at 31
Inner matrix dimensions must agree.
不知是什么原因。
编写的程序如下:
chrom1=;
chrom2=;
n=1;sum=0;
while n<3
syms s;
x=chrom2(n,1);y=chrom2(n,2);
rp1=chrom1(n,1);rrp1=chrom1(n,2);
rp=2;rrp=1;zp=1;zc=1;a=1;
ih=zp/zc;k=a*zp/(rp-rp1);
s=solve(x-((rp-rp1-(rrp+rrp1)*(1+k^2-2*k*cos(s)))*sin((1-ih)*s)-a/(rp-rp1)*(rp-rp1-zp*(rrp+rrp1)*(1+k^2-2*k*cos(s)))*sin(ih*s)));
y1=solve((rp-rp1-(rrp+rrp1)*(1+k^2-2*k*cos(s)))*cos((1-ih)*s)-a/(rp-rp1)*(rp-rp1-zp*(rrp+rrp1)*(1+k^2-2*k*cos(s)))*cos(ih*s));
sum=abs(y1-y)+sum;
n=n+1;
end
请各位高手指点。
页: [1]
查看完整版本: 请求编写一段小程序