matlab积分法求椭圆周长,用MATLAB计算椭圆周长和牛顿迭代MATLAB实现.doc
用MATLAB计算椭圆周长和牛顿迭代MATLAB实现
用MATLAB计算椭圆周长及牛顿迭代的MATLAB实现实验目的与要求
实验方案:
用二分法和牛顿迭代法(包括弦截法)编程求方程的实根,要求误差不超过。输出迭代次数,初始值和根的近似值;构造不同的迭代函数,用迭代法求解,并进行比较。
编写M文件绘制该函数图形,源程序如下:
function y=EX0111
x=-1:0.1:2;
y=sin(x)-(x.^2)/2;
plot(x,y,'r')
hold on
plot(x,zeros(size(x)))
hold off
grid
运行后可以看出,函数的根在区间[1,1.5]。所以,分析题意,编写二分法源程序如下:
function y=EX0110
syms x y;
y=sin(x)-(x.^2)/2;
a=1;
b=1.5;
delta=0.0001;
ya=subs(y,a);
yb=subs(y,b);
N=1+round((log(b-a)-log(delta))/log(2));
for k=1:N
dx=yb*(b-a)/(yb-ya+eps);
c=b-dx;
ab=b-a;
yc=subs(y,c);
if yc==0,break;
elseif ya*yc<0
b=c;
yb=yc;
else
a=c;
ya=yc;
end
dd=min(abs(ab),abs(yc));
if dd
end
dd
k
c=b-dx
运用牛顿迭代法编程,源程序如下:
function y=fun(x)
y=sin(x)-(x.^2)/2;
和该函数导数:
function y=dfun(x)
y=cos(x)-x;
以及牛顿迭代法:
function [xk,k]=newtoneq(x0,n,derta)
k=1;
xk(1)=x0;
t=x0-fun(x0)./dfun(x0);
while abs(t-x0)>=derta
x0=t;
k=k+1;
xk(k)=t;
t=x0-fun(x0)./dfun(x0);
if (k-1)>n error('n is full'),end
end
构造新的迭代函数为,编辑源程序如下:
function y=iter()
syms x y;
y=sqrt(2*sin(x));
x0=1;
max=20;
derta=0.0001;
t=[x0];
x=subs(y,x0);
k=0;
while abs(x-x0)>=derta
t=[t,x];
x0=x;
x=subs(y,x0);
k=k+1;
if k>max
disp('迭代次数超过最大次数。 ')
break
end
end
t
实验结果和数据处理
运行绘制函数图形源文件得如下图像,从图像中可看出,该函数的根所在的区间为[1,1.5]。
图1
运行运用二分法编程的源程序得如下数据:
图2
运行运用牛顿迭代法编程的源程序,在命令框中输入如下命令:
[xk,k]=newtoneq(1,20,0.0001)
运行得出以下数据:
图3
三、实验目的与要求:
已知椭圆的周长可以表示成(),取a=1。针对从0.1到0.9(步长h=0.1)分别求出周长s。(用Romberg积分方法)
四、实验方案:
编辑实现Romberg积分方法的源程序,得如下M文件:
function [s,n,t]=rombint(fun,a,b,tol)
format long
s=10000;
s0=0;
k=2;
t(1,1)=(b-a)*(fun(a)+fun(b))/2;
while (abs(s-s0)>tol)
h=(b-a)/2^(k-1);
w=0;
if(h~=0)
for i=1:(2^(k-1)-1)
w=w+fun(a+i*h);
end
t(k,1)=h*(fun(a)/2+w+fun(b)/2);
for l=2:k
for i=1;(k-l+1)
t(i,l)=(4^(l
matlab积分法求椭圆周长,用MATLAB计算椭圆周长和牛顿迭代MATLAB实现.doc相关推荐
- matlab如何求指标的权向量_层次分析模型(AHP)及其MATLAB实现
今天用将近一天的时间学习了层次分析模型(AHP),主要参考了一份pdf,这个网站,和暨南大学章老师的课件,现写出一些自己总结的要点. 一.层次分析法的基本步骤: 角度一: 实际问题--分解--> ...
- matlab pca求曲率和法向量_实践课堂 已给出实例的MATLAB求解大汇总(线性规划)...
[例1]用图解法求解如下二维线性规划问题. 友情链接:例1详解可点击这里 [例1]的MATLAB求解. %原目标函数,为转化为极小,取目标函数中设计变量的相反数 c=[-1;-1]; %线性不等式约束 ...
- 求平方根的牛顿迭代matlab程序,牛顿迭代法求平方根
牛顿迭代法的作用是使用迭代法来求解函数方程的根,简单的说就是不断地求取切线的过程.对于形如f(x)=0的方程,首先任意的估算一个解x0,再把该估计值代入原方程中.由于一般不会正好选择到正确的解,所以有 ...
- 用随机投点法计算pi值matlab,(原创精品)用随机投点法计算π值【Compute π with dartpoint randomly】.doc...
(原创精品)用随机投点法计算π值[Compute π with dartpoint randomly] 题目:Compute π with dartpoint randomly 用随机投点法计算π值 ...
- python椭圆识别_Python+pillow计算椭圆图形几何中心
本文所用测试图像文件位于当前文件夹的testimages子文件夹中,并且图像以白色为背景. from PIL import Image import os def searchLeft(width, ...
- 高斯牛顿迭代matlab程序,高斯—牛顿法(LM法)迭代无法收敛,代码如下,R14b版本...
本帖最后由 大禹man 于 2017-2-25 16:07 编辑 需要拟合的函数为zeta,用omeg的前两个数计算得到系数a0和a1,他们会在循环过程中随着miu0和miu1变化,我的程序如下,可以 ...
- 用牛顿法求方程的根的c语言编程,用牛顿迭代法和二分法求方程的根【C语言】...
1.用牛顿迭代法求该方程在1.5附近的根:2X^3-4X^2+3X-6=0 #include #include double func(double x) //函数 {return 2*x*x*x-4 ...
- matlab:求平均值
matlab:求平均值 mean函数 sum函数 mean2函数 trapz函数 在MATLAB中求平均值有多种方法,下面分别介绍. mean函数 mean函数是MATLAB内置的计算平均值的函数,用 ...
- 使用牛顿迭代的方法求出方程的实根(MATLAB)
<计算方法>有一题使用牛顿迭代求解方程实根的题目. 查阅资料,发现判断方程有几个实根的方法太复杂,为了有效求出方程的实根,可以每次使用牛顿迭代求出一个根"p"后,将原方 ...
- 非线性方程求根方法总结附代码(从二分法、试位法到牛顿迭代、二次插值等)
非线性方程求根方法总结&附代码(从二分法.试位法到牛顿迭代.二次插值等) 1 划界法 1.1 二分法 1.1 试位法 1.3 改进试位的法思路 1.4 Ridders方法 1.5 划界法的问题 ...
最新文章
- 月入5万,程序员夫人们过上贵妇生活了吗?
- cas 单点登录_47 使用cas完成单点登录-02 搭建cas client完成单点登录
- 男厕改女厕能多敷衍......
- HTML5,CSS3,JS绘制饼图
- Spark基础学习笔记02:Spark运行时架构
- linux qemu 运行win10,只用ISO镜像,在Linux系统上用Qemu虚拟机给另一块硬盘安装Windows 10...
- 2021高考达州二诊成绩查询,2021二诊成绩怎样换算高考分 分数相差多少
- OBS Windows10 1909版本黑屏问题解决方案
- c# 系列 - 基本知识
- du和df文件大小不一致问题排查
- 基于Java毕业设计校园疫情防控管理系统源码+系统+mysql+lw文档+部署软件
- 2021-05-03Wireshark流量包分析
- 春招艰难?给你几条应届生的求职建议!
- vsCode html文件格式化
- 1G,2G,3G,4G,5G的发展和通讯原理
- PHP内核-Apache2的SAPI
- 【推荐】mysql联合 索引(复合索引)的探讨
- EFCore之执行原生SQL语句
- 项目开发流程(简述)
- OOSE-人际关系管理系统设计开发