在此举一个已知弦长和弧长求园半径的例子.
法一:使用自带函数
%ezplot('x*sin(pi/(6*x))-0.5',[0.6,2])
示例:半径=1,六分之一圆弧
ezplot('x*sin(b/x)-a',[0.6,2])
%求解方程:x*sin(b/x)-a=0
%ezplot('x*sin(pi/(4*x))-0.707',[0.6,2])
hold
on
plot(xlim,[0
0],'r')
grid
%
a=弦长/2
,
b=弧长/2
,【】为解区间.
%
图中红线和蓝线的交点就是解
%
更精确的解可以使用二分法求解
%
本例可以选择交点两侧的点[2,4],[5,7]再次求解,可以更精确
%
本人认为如此处理没有解不出来的超越方程
法二:差值法收敛求解
a=0.707
%弦长/2
b=pi/4
%弧长/2
r1=0
%收敛区间
r2=3
for
i=1:10000
%收敛次数
r=(r1+r2)/2
%
c(i)=r*sin((180*b)/(pi*r))
c(i)=r*sin(pi/(4*r))
%
c(i)=r*sin(b/r)
if
c(i)>a
r2=r
else
r1=r
1、R语言矩阵函数t(x) 转置diag(x) 对角阵x %*% y 矩阵运算solve(a,b) 运算a%*%x=b得到xsolve(a) 矩阵的逆rowsum(x)行加和colsum(x)列加和rowMeans(x) 行平均colMeans(x) 列平均
2、求解线性方程组
分析:使用函数solve(a,b),运算a%*%x=b得到x。a<-matrix(c(1,1,1,-1),2,2)b<-c(3,1)solve(a,b)运行结果>a<-matrix(c(1,1,1,-1),2,2)b<-c(3,1)solve(a,b)[1] 2 1a<-matrix(c(1,1,1,-1),2,2)
b<-c(3,1)
solve(a,b)
运行结果
>a<-matrix(c(1,1,1,-1),2,2)b<-c(3,1)solve(a,b)
[1] 2 1
注:这里矩阵a从数组读数是按照列读数