帮忙看看我的一个方程求解的小程序
为什么我的程序得不到结果呢?c=0.1442;
alfa=0.1;
w=0:0.1:2.5;
H=w.^2;
for w=0:0.1:2.5;
A=solve('((2*c*w)^2+(1-w^2+alfa*(3/4)*x)^2)*x=H^2');%解方程
y=A(3,1);%得到三个解,取实数解
plot(w,y)
hold on
end
[ 本帖最后由 eight 于 2007-9-11 11:52 编辑 ] 原帖由 handb 于 2007-9-11 11:00 发表 http://www.chinavib.com/forum/images/common/back.gif
为什么我的程序得不到结果呢?
c=0.1442;
alfa=0.1;
w=0:0.1:2.5;
H=w.^2;
for w=0:0.1:2.5;
A=solve('((2*c*w)^2+(1-w^2+alfa*(3/4)*x)^2)*x=H^2');%解方程
y=A(3,1);%得到三个解,取实数解
...
solve 里面的方程:等号左边是标量,右边是向量,哪能得到结果?建议先搞清楚点运算和整体运算的区别,多看看基础书,或者本版的初学者系列相关帖子 该了一下,还是报错
c=0.1442;
alfa=0.1;
w=0:0.1:2.5;
for j=1:26;
H(j)=(w(j))^2;
strEqu=['((2*c*w)^2+(1-w^2+alfa*(3/4)*x)^2)*x=(H)^2'];%解方程
x(j)=solve(strEqu);
y(j)=x(j)(3,1);%得到三个解,取实数解
j=j+1;
plot(w,y(j))
hold on
end
??? Error: () Indexing must appear last in an index expression. 原帖由 handb 于 2007-9-11 15:15 发表 http://www.chinavib.com/forum/images/common/back.gif
该了一下,还是报错
c=0.1442;
alfa=0.1;
w=0:0.1:2.5;
for j=1:26;
H(j)=(w(j))^2;
strEqu=['((2*c*w)^2+(1-w^2+alfa*(3/4)*x)^2)*x=(H)^2'];%解方程
x(j)=solve(strEqu);
y(j)=x(j)( ...
matlab 没有 x(j)(3,1) 这种表示的,建议还是先打好基础,不能心急 问题很多.
提示: 用num2str将常数带入方程;将H=w.^2;写为H=w^2;放到循环里面,... 谢谢,我再试试 改了一下,把运算过程不变的常数直接代到方程中,还是不行
clear
w=0:0.1:2.5;
forj=1:26;
H(j)=w(j)^2;
strEqu=['(2*0.1442)^2*',num2str(w^2),'+(1-',num2str(w^2),'+(3/4)*0.1*x)^2*x-H^2'];%解方程
x(j)=solve(strEqu);
y(j)=isreal(x(j));%取实数解
j=j+1;
ww=double(w);
yy=double(y(j))
plot(ww,yy)
hold on
end 这程序编得真是有点惨不忍睹...
你自己按此修改一下吧:
%%%%%%%%%%%%%%
...
w1=0:0.1:2.5;
for k=1:length(w1);
w=w1(k);
H=w1(k)^2;
...
plot(w1,y)放到循环外面.
%%%%%%%%%%%%%
不过要注意: 并非只有第一个根为实根(有些情况3个都为实根), 所以上面的取法不一定合适.
关键是你没有讲清楚原问题, 所以不便猜测.
[ 本帖最后由 xjzuo 于 2007-9-13 09:07 编辑 ] 谢谢xjzuo,不好意思,给你添麻烦了,再次表示感谢
改了一下,可方程还是解不了啊
clear all
w1=0:0.1:2.5;
for k=1:length(w1);
w=w1(k);
H=w1(k)^2;
strEqu=['(2*0.1442)^2*',num2str(w^2),'+(1-',num2str(w^2),'+(3/4)*0.1*x)^2*x-H^2'];
x(k)=solve(strEqu);
y(k)=x(3,:);%一个w有三个解,只有第三个解是实数解,不知这样取对不
k=k+1;
end
plot(w1,y)
??? Subscripted assignment dimension mismatch. 用1stOpt方便点。
Constant c=0.1442,alfa=0.1;
LoopConstant w=;
ConstStr H=w^2;
Function ((2*c*w)^2+(1-w^2+alfa*(3/4)*x)^2)*x=H^2; 谢谢dingd,thanks....
我自己的程序也解决了,要把解转换成double类型,谢谢帮助,谢谢!
页:
[1]