solve a partial differential equation
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
Hi! I want to solve a second partial differential equation.

The general solution is

Which command should I use to get the general solution? I think dsolve doesn't work well. Thanks for helping me.
1 件のコメント
madhan ravi
2018 年 10 月 21 日
Upload your code
採用された回答
Stephan
2018 年 10 月 21 日
Hi,
the following code solves the equation with the initial conditions:
y(0)=0
dy/dx(0)=0
Then it rewrites the result in terms of sin ans cos:
syms y(x) x E I N P c l Dyt(x)
eqn = E*I*diff(y,x,2)+N*y == -P*c/l*x;
[eqns, vars] = reduceDifferentialOrder(eqn,y);
conds = [y(0)==0,Dyt(0)==0];
sol = dsolve(eqns,conds);
sol_sin = simplify(rewrite(sol.y,'sin'))
I think that was the question.
Best regards
Stephan
10 件のコメント
Yuchi Kang
2018 年 10 月 21 日
Thanks for helping me. But it seems wrong.

In addition, reduceDifferentialOrder is used here. Could you please tell me a little bit about the reason?
Best regards
Yuchi Kang
Stephan
2018 年 10 月 21 日
For me the code runs fine. Is there a copy paste mistake? Which Release do you use?
Yuchi Kang
2018 年 10 月 21 日
Thanks for your reply. I have checked carefully, there is no paste mistake. R2017a is used.

madhan ravi
2018 年 10 月 21 日
Works for me
Im using R2018b - let me check this. Maybe there is a difference in dsolve.
Can you show us the result of typing this in commmand line:
eqns
vars
after executing the code ans getting the error?
Yuchi Kang
2018 年 10 月 21 日
Here is the photo for executing the two commands.

I try to use R2018a. It does work and here is the result
sol_sin =
(N^(1/2)*P*c*x*sin((x*((-E*I*N)^(1/2)*1i + E^(1/2)*I^(1/2)*N^(1/2)))/(E*I))*1i - E^(1/2)*I^(1/2)*P*c*cos((N^(1/2)*x)/(E^(1/2)*I^(1/2)))*1i + E^(1/2)*I^(1/2)*P*c*cos((x*((-E*I*N)^(1/2)*1i + E^(1/2)*I^(1/2)*N^(1/2)))/(E*I))*1i)/(N^(3/2)*l)
Stephan
2018 年 10 月 21 日
Nice. Problem solved?
Yuchi Kang
2018 年 10 月 21 日
Yes. Almost done. Thanks. But I have a minor problem with the results. If I want to use this equation k^2=N/E/I to simplify my results. May I use the subs command?
Best regards Yuchi Kang
yes - this is what subs is for - i would suggest to this before reducing the differential order:
syms y(x) x E I N P c l Dyt(x) k
eqn = diff(y,x,2)+N/E*I*y == -P*c/(l*E*I)*x;
eqn = subs(eqn,(N/E*I),k^2)
[eqns, vars] = reduceDifferentialOrder(eqn,y);
conds = [y(0)==0,Dyt(0)==0];
sol = dsolve(eqns,conds)
sol_sin = rewrite(sol.y,'sin')
which gives:
sol_sin =
- ((P*c*1i)/(2*E*I*k^3*l) + (P*c*(- 1 + k*x*1i)*(sin(k*x)*1i - 2*sin((k*x)/2)^2 + 1)*1i)/(2*E*I*k^3*l))*(sin(k*x)*1i + 2*sin((k*x)/2)^2 - 1) - ((P*c*1i)/(2*E*I*k^3*l) + (P*c*(1 + k*x*1i)*(sin(k*x)*1i + 2*sin((k*x)/2)^2 - 1)*1i)/(2*E*I*k^3*l))*(sin(k*x)*1i - 2*sin((k*x)/2)^2 + 1)
You can also get rid of the imaginary parts of the results by making some assumptions. For example i suspect E to be youngs modul, which should be a real number and positive always:
syms y(x) x E I N P c l Dyt(x) k
eqn = diff(y,x,2)+N/E*I*y == -P*c/(l*E*I)*x;
eqn = subs(eqn,(N/E*I),k^2)
[eqns, vars] = reduceDifferentialOrder(eqn,y);
conds = [y(0)==0,Dyt(0)==0];
assume([x P c l k],'real');
assumeAlso(c>=0 & l>=0 & k>=0);
assumptions
sol = dsolve(eqns,conds)
sol_sin = rewrite(sol.y,'sin')
results in:
sol_sin =
(P*c*sin(k*x))/(E*I*k^3*l) - (P*c*x)/(E*I*k^2*l)
You should check if the assumptions i made are correct in your case and modify them if needed.
Stephan
2018 年 10 月 21 日
If this answer was helpful to you, please accept it.
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Assumptions についてさらに検索
タグ
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
