欧拉法求解y'=-2y-4x, x0=0, y0=2, x<=1的求解如下:
#include<stdio.h>
/*solve ode: dy/dx = -2*y -4*x*/
float fun(float x,float y){
float f
f=-2.0*y -4.0*x
return f
}
int main(){
float x0=0,y0=2.0,x,y,h=0.1,t=1.0,k
/* printf("\nEnter x0,y0,h,xn: ") scanf("%f%f%f%f",&x0,&y0,&h,&t)*/
x=x0
y=y0
printf("\n x\t y\n")
while(x<=t){
k=h*fun(x,y)
y=y+k
x=x+h
printf("%0.3f\t%0.3f\n",x,y)
}return 0
}
代码截图
运行结果
代码截图+运行结果
(晚点我再来看后面的几小问)
int eular(int n){
int ret=1,i //定义变量
for(i=2i*i<=ni++) //从i=2开始循环,判定条件为i*i小于等于n,循环一次i增加1
if(n%i==0) //判定条件为n除以i的余数等于0
{
n/=i,ret*=i-1 //n=n/i,ret = ret*(i-1)
while(n%i==0) //当n除以i的余数等于0时执行下面的语句,否则跳过
n/=i,ret*=i
}
if(n>1) //如果n>1执行下面语句,否则跳过
ret*=n-1 //ret = ret*(n-1)
return ret
}
直接复制的百度百科的,没具体看是什么功能
f=inline('x*y','x','y')%微分方程的右边项 dx=0.05%x方向步长 xleft=0%区域的左边界 xright=3%区域的右边界 xx=xleft:dx:xright%一系列离散的点 n=length(xx)%点的个数 y0=1%%(1)欧拉法 Euler=y0fori=2:n Euler(i)=...