你好!大神在此!
主程序:
%matlab编写积分程序请问哪位大神能编写下面的程序:不胜感激clc;clear all
global t
R=1:001:5;
m=zeros(size(R));
for i=1:length(R)
t=R(i);
m(i)=integral2(@f,0,R(i),0,2pi);
end
plot(R,m)
xlabel('R')
ylabel('m')
title('m-R Curve')
函数程序:
function c=f(r,theta)global t
c=rsqrt((tcos(theta)-r)^2+t^2(sin(theta))^2);
end
画出效果:
你好!
clear
clc
x0=0;%积分起点
xf=10;%积分终点
n=10001;
x=linspace(x0,xf,n);%分成n-1份
dintt=sum(1/(n-1)(1/(x+5)))%Riemman和
如果对你有帮助,望采纳。
有区别:这里假定pi是double型的变量
1)x为整型时,y=sin(xpi/180);会先计算xpi得到double型数据(因为pi的类型),然后再做除法
z=sin(x/180pi);会先计算x/180得到整型数据(因为分子、分母均整型)小数部分被
截断了然后再与pi相乘得到double类型结果
应当写做:z=sin((double)x/180pi);或z=sin(x/1800pi);
只要分子、分母中有一个数据类型是double的会使编译程序调用double类型的
运算步骤。
2)x是double型但取值很大时
y=sin(xpi/180);会先计算xpi,如果x的值大得xpi会超出double类型表示范围时就会出问题
y=sin(x/180pi);会先计算除法,这样先缩小得数再做乘法保证结果不会溢出
1
Public
Function
梯形积分(r
As
String,
a
As
Double,
b
As
Double,
n
As
Integer)
As
Double
2
Dim
dx
As
Double,
i
As
Integer
3
dx
=
(b
-
a)
/
n
4
For
i
=
1
To
n
5
梯形积分
=
梯形积分
+
fx(r,
(a
+
dx
(i
-
1
/
2)))
dx
6
Next
i
7
End
Function
8
Public
Function
复化辛普生积分(r
As
String,
a
As
Double,
b
As
Double,
n
As
Integer)
As
Double
9
Dim
dx
As
Double,
i
As
Integer,
m
As
Integer
10
m
=
2
n
11
dx
=
(b
-
a)
/
m
12
复化辛普生积分
=
fx(r,
a)
+
fx(r,
b)
13
For
i
=
2
To
m
Step
2
14
复化辛普生积分
=
复化辛普生积分
+
4
fx(r,
(a
+
dx
(i
-
1)))
+
2
fx(r,
(a
+
dx
i))
15
Next
i
16
复化辛普生积分
=
(复化辛普生积分
-
2
fx(r,
(a
+
dx
m)))
dx
/
3
17
End
Function
18
Public
Function
fx(f
As
String,
x
As
Double)
As
Double
19
f
=
LCase(f)
20
fx
=
Evaluate(Replace(f,
"x",
x))
21
End
Function
两个函数的参数都是1积分函数,自变量用x表示,x不区分大小写2积分下限3积分上限4划分次数,不能大于32766,对于梯形积分,越大越接近真值,对于复化辛普生积分,没必要使用大的划分次数积分区间包含奇点(趋近于无穷的点),复化辛普生公式将不能正确积分,将来可能会修正也希望高手出招调用方法:=梯形积分("sin(x)^3-ln(x+1)^3+x^5-x",
0,
2,
2000)
以上就是关于matlab编写积分程序全部的内容,包括:matlab编写积分程序、用matlab编写程序,求解1/(x+5)的定积分,方法根据定积分的原始定义、用c语言编写y=sin()利用积分概念等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)