matlab解二阶非线性微分方程(难点方程中带有积分)高手请来 20

clearall;closeall;clca1=5*10^(-6);a2=200*10^(-6);a3=250*10^(-6);b=350*10^(-6);d=12*10... clear all;
close all;
clc
a1=5*10^(-6);
a2=200*10^(-6);
a3=250*10^(-6);
b=350*10^(-6);
d=12*10^(-6);
h=10*10^(-6);
ro=2323;
M=pi*ro*a3^2*h;
I=1/4*M*a3^2;
B=3.53*10e-14;
K=2.09*10^(-8);
e0=8.85*10^(-12);
alpham=d/a3;
beta=a2/a3;
galm=a1/a3;
T=0.005;
TimeSet=[0,T];
x0=[0.00001;0.0001];
syms w;
f=@(t,x,volt)[x(2);-(B/I)*x(2)-(K/I)*x(1)+e0*volt^2/(2*I)*int(w*sqrt(a2^2-w^2)/(d-w*x(1))^2,w,a1,a2)];
volt=26;
[t1,y1]=ode45(f,TimeSet,x0,[],volt);
plot(t1*1000,y1(:,1)*180/pi,'r');
展开
 我来答
he1005471223
2011-11-07
知道答主
回答量:3
采纳率:0%
帮助的人:5305
展开全部
MATLAB提供了两种方法解决PDE问题:
一是pdepe()函数,它可以求解一般的PDEs,据用较大的通用性,但只支持命令行形式调用。
二是PDE工具箱,可以求解特殊PDE问题,PDEtool有较大的局限性,比如只能求解二阶PDE问题,并且不能解决偏微分方程组,但是它提供了GUI界面,从繁杂的编程中解脱出来了,同时还可以通过File->Save As直接生成M代码

MATLAB语言提供了pdepe()函数,可以直接求解一般偏微分方程(组),它的调用格式为

sol=pdepe(m,@pdefun,@pdeic,@pdebc,x,t)

【输入参数】
@pdefun:是PDE的问题描述函数,它必须换成下面的标准形式

这样,PDE就可以编写下面的入口函数
[c,f,s]=pdefun(x,t,u,du)
m,x,t就是对应于(式1)中相关参数,du是u的一阶导数,由给定的输入变量即可表示出出c,f,s这三个函数

@pdebc:是PDE的边界条件描述函数,必须先化为下面的形式

于是边值条件可以编写下面函数描述为
[pa,qa,pb,qb]=pdebc(x,t,u,du)
其中a表示下边界,b表示下边界

@pdeic:是PDE的初值条件,必须化为下面的形式

股我们使用下面的简单的函数来描述为
u0=pdeic(x)

m,x,t:就是对应于(式1)中相关参数

【输出参数】
sol:是一个三维数组,sol(:,:,i)表示ui的解,换句话说uk对应x(i)和t(j)时的解为sol(i,j,k)

通过sol,我们可以使用pdeval()直接计算某个点的函数值
追问
那个PDEtool 在那找呢?我还没用过,应该不是在simulink里面吧?
厦门鲎试剂生物科技股份有限公司
2023-08-01 广告
计算过程如下:首先,计算4个数值的和:∑Xs = 0.3 + 0.2 + 0.4 + 0.1 = 1然后,计算 lg-1(∑Xs/4):lg-1(∑Xs/4) = lg-1(1/4) = -1其中,lg表示以10为底的对数,即 log10。... 点击进入详情页
本回答由厦门鲎试剂生物科技股份有限公司提供
碎裂的记忆
2011-11-10 · TA获得超过1459个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:441万
展开全部
这里不能直接在函数中用Int,你把积分项单独作为一个状态量。x(3),它的导数就是你这int(w*sqrt(a2^2-w^2)括号里的东西。
等于多了一个微分方程。这是最简单的方法。
你如果还不会我再给你把这个程序写出来。
更多追问追答
追问
可这里的积分是对W积分的,而求导是对t求导的,这样能消掉嘛?
追答
可以。你试一试。
增加了一个变量,将你希望的也求出来了。没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式