牛顿迭代法
过初始点 x0,作曲线的切线,切线与 x 轴交点即一次近似值。
Excel 表示
%创建函数
function [x,n,Xn,Yn] = newtondiedai(fun,dfun,x0,EPS)
% fun为目标函数,dfun为目标函数的一阶导数,x0为起始点,EPS为精度
a=feval(fun,x0);
b=a+1;
n=0;
%建立画图的点
Xn = zeros(5,1);
Yn = zeros(5,1);
while(abs(a-b) >= EPS)
a = feval(fun,x0) ;
df = feval(dfun,x0);
Xn(n+1,1) = x0;
Yn(n+1,1) = a;
if (feval(dfun,x0) == 0)
break
else
x0 = x0 - a/df;
end
b = feval(fun,x0);
n = n + 1;
end
x = x0;
%输入参数
fun=inline('x^2 - 9','x');
dfun = inline('2*x','x');
Xn = zeros(5,1);
Yn = zeros(5,1);
x0 = 4;
EPS = 0.001;
[x,n,Xn,Yn] = newtondiedai(fun,dfun,x0,EPS)
函数基础
I = [3 2 1; 5 5 5; 10 8 9]
I([1 2],:) = [3 2 1;5 5 5]
第一行:第一行的所有列 第二行:第二行的所有列
I([3,1],:) = I([1,3],:) 第一行和第三行互换
a*b 正常矩阵相乘 a.*b 对应元素相乘
- Step(num,den) 求阶跃响应
- impulse(num,den)求脉冲响应
- Conv
- Linspace
x = linspace(0,10,5)
x =0 2.5000 5.0000 7.5000 10.0000
- logspace(0,1,11) 生成100~101中 11 个等分的数
- sparse 稀疏矩阵 返回非零元素位置 和数值
- full 把稀疏矩阵补 0 成全矩阵
A = sparse([2 3],[4 5],[1 3]) A = sparse(1:3,1:3,1:3)
A = A= (1,1) 1
(2,4) 1 (2,2) 2
(3,5) 3 (3,3) 3
- meshgrid
x =[1 2]
y = [3 4 5]
[X,Y]=meshgrid(x,y)
X =
1 2
1 2
1 2
Y =
3 3
4 4
5 5
-isempty - 确定数组是否为空
-find - 查找非零元素的索引和值
-Fix 去掉小数(向 0 接近)
-floor 向下取整
-Ceil 向上取整
-Round 四舍五入
y = round(x,-4)
x = 12358466243.325;
y_correct = 12358470000.000;
- Roots(n)求根 n 为多项式系数构成的矩阵[]
- 将字符串中的数字分开成矩阵 x = ‘1100101’ a = abs(x)-48
- str2num 将字符串转成数字
- randi([m,n],[a,b]) 得一个值为a到b(都包括)的m*n大小的随机数矩阵
- sum(n,a) n 为矩阵,a为 1时求各列和返回行,a 为 2 时求各行和返回列
- 矩阵倒序y = x(end:-1:1) 或 y = sort(x,’descend’)
- 矩阵中最大值 y = max(x,[] ,‘all’) 或者 max(max(x))
- 判断奇偶 if mod(n,2) %ji数 else%ou数
- C = unique(A):返回的是和A中一样的值,但是没有重复元素。产生的结果向量按升序排序。
- any(A,1) 对 A 中列的连续元素进行处理并返回逻辑值行向量。
any(A,2) 对 A 中行的连续元素进行处理并返回逻辑值列向量。 - n=hist(Y): 默认十个等间隔区间,并返回每个范围内的Y的元素个数作为一行向量;
[n,xout]=hist(Y,X):n是每一个区间的个数,xout是区间的中心位置,输入参数中X是一个事先给定的区间划分,统计Y在X这个区间划分下的个数。
A = randn(3,4) % 创建3行4列随机矩阵
[r,c] = size(A) % 读取行r、列c
for i = 1:r % 建立for循环嵌套
for k = 1:c
A(i,k) % 读取矩阵每个位置数据,先行后列
end
end
Problem 769. Calculate the area of a triangle between three points
polyarea 返回向量 X 和 Y 中顶点所指定多边形的面积。
X=[1 0 0];
Y=[0 0 1];
polyarea(X,Y)
Problem 42876. Rotate Matrix @180 degree
rot90() 将矩阵翻转 90°
y = rot90(rot90(x))