雪佛兰经典科鲁兹:数学软件高手:未入门的菜虫请教MATLAB编程问题!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 02:54:40
1.试编程动画显示心形线的形成过程.
另有多道题目保存为图片格式,望高手看一看,帮忙写一下,谢谢!如果不方便贴在这里,可发送到邮箱155189038@163.com.多谢!
http://img373.photo.163.com/155189038/12389151/1209836892.jpg

1.心形线是圆的外摆线的一种,它是这样形成的:一个动圆沿一个定圆的圆周外部无滑动的滚动(两个圆的半径相等),动圆的圆周上的一固定点运动的轨迹就是心形线。程序如下:
function [xcar,ycar]=drawcardioid(varargin)
% A demonstration to show the form of the cardioid

error(nargchk(0,3,nargin));
nin = nargin;
if nin==0
cx1=0; cy1=0; % The coordinate of the center point.
r=1; % The radius of the circle.
elseif nin==1
cx1=0; cy1=0;
r=varargin{1};
elseif nin==2
cx1=0;
cy1= vararin{1};
r = varargin{2};
else
cx1=vararin{1};
cy1=vararin{2};
r=vararin{3};
end

if nargout==0
flag=1;
else
flag=0;
end

theta = linspace(0,2*pi,120);
x0 = r*cos(theta);
y0 = r*sin(theta);
x1 = x0+cx1;
y1 = y0+cy1;
cx2 = 2*x0+cx1;
cy2 = 2*y0+cy1;
x3=x0.*cos(theta)-y0.*sin(theta);
y3=x0.*sin(theta)+y0.*cos(theta);
for k=1:120
x2(k,:) = cx2(k)+x0;
y2(k,:) = cy2(k)+y0;
xx(k)=cx2(k)+x3(k);
yy(k)=cy2(k)+y3(k);
end
xcar = xx;
ycar = yy;
if flag
plot(x1,y1);
axis([cx1-3.2*r cx1+3.2*r cy1-3.2*r cy1+3.2*r]);
axis manual;
hold on
daspect([1 1 1]);
set(gcf,'doublebuffer','on');
for k = 1:120
plot(x2(k,:),y2(k,:),'g',xx(k),yy(k),'r*');
pause(0.05);
%plot(x2,y2,'color','w');
end
end

2.求a的平方根:
function y=sq(a)
ep=1.0E-5;
x1=1;
x2=(x1+a/x1)/2;
while(abs(x1-x2)>ep)
x1=x2;
x2=(x1+a/x1)/2;
end
y=x2;

3.多种方法迭代:该方程有一实根:-0.7684531615
方法一:
function y=st1()
ep=1.0E-5;
x1=-2;
x2=(-x1^5+2*x1-1)/(5*x1^2);
while(abs(x1-x2)>ep)
x1=x2;
x2=(-x1^5+2*x1-1)/(5*x1^2);
end
y=x2;
该方法发散

方法二:
function y=st2()
ep=1.0E-5;
x1=-2;
x2=(-5*x1^3+2*x1-1)/x1^4;
while(abs(x1-x2)>ep)
x1=x2;
x2=(-5*x1^3+2*x1-1)/x1^4;
end
y=x2;
该方法不稳定。

方法三:
function y=sq()
ep=1.0E-5;
x1=-1;
tim=-x1^5+2*x1-1;
x2=sign(tim/5)*(abs(tim/5))^(1/3);
while(abs(x1-x2)>ep)
x1=x2;
tim=-x1^5+2*x1-1;
x2=sign(tim/5)*(abs(tim/5))^(1/3);
end
y=x2;
该算法稳定收敛。

由于时间有限,最后一题留给你自己做吧。