MATLAB程序解释

MATLAB程序解释,第1张

clear all

clc

[x,y,z]=meshgrid(linspace(-3,3)) % linspace(-3,3)生成-3到3的100个向量;meshgrid生成网格x,y,z

zz=sqrt(x.^2+y.^2)-1 %计算zz的值:zz=根号(x平方+y平方)-1

p=z.^2+zz.^2%计算p的值:p=z平方+zz平方

[faces,verts,colors]=isosurface(x,y,z,p,1,x)%将三维数组p的一系列值1,提取到faces,verts,colors中

pp=patch('Faces',faces,'Vertices',verts) %利用指定的属性/值参数对来指定补片对象的所有属性。

set(pp,'FaceColor','r','EdgeColor','none') %设置pp显示的颜色为红色,边的颜色没有

axis off  % 删除坐标轴

camlight  % 创建光源

lighting gouraud%照明设置:gouraud:先对顶点颜色插补,再对顶点勾划的面色进行插补,用于曲面表现。还有flat,phong和none

hold on% 保留现有的图

y1=0.05:0.05:0.8%生成y1向量,从0.05到0.8,步长0.05

x1=zeros(length(y1))+0.1%生成矩阵x1,zeros(length(y1))表示生成全0的矩阵,维度为(y1元素的个数)X(y1元素的个数),x1为元素全等于0.1的矩阵

z1=0.3+sqrt(y1)%计算z1:z1=0.3+根号y1

plot3(x1,y1,z1,'k','LineWidth',5)%画x1,y1,z1组成的三维图,颜色为黑色,线宽5

title('Merry christmas!')%加入标题:Merry christmas!

(1) f=(0:length(y)-1)*50/length(y)

这相当于将50分成length(y)等分,再去掉50那个点

(2)

我写成f=(0:50)或是f=(0:100)行不行?

这里的f仅是0到50之间的数。

fzero的功能是函数的数值求解,使用方式是

outx= fzero(fun,x0)

其中fun是要求解函数的句柄,fun要求只有一个输入变量x

x0是你给出的初始x值,

函数会在这个初始x值开始在附近需找一个x值,使得fun返回值为0

返回值outx就是也就是找到fun=0的根

你程序原来有,x,y两组数据

首先用p=polyfit(x,y,2),将数据拟合为二次函数

然后x0 = fzero( @(x)polyval(p,x)-0.5, (x(1)+x(end))/2 )

就是用fzero 找出这个二次函数=0.5时的根

而(x(1)+x(end))/2就是原来数据的第一个值和最后一个值的平均值

在这里用这个平均值,作为初始值,在其附近寻找 二次函数=0.5这个方程的根


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11273201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存