質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

349閲覧

invalid syntax のエラーが出てしまったのですが解決策を教えてください(電磁場解析)

abcz

総合スコア1

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/12 05:36

前提・実現したいこと

私はプログラミング初心者です。
「pythonを使った光電磁場解析」という教科書を使いプログラミングの勉強をしているのですが以下のようなエラーが出てしまいました。何度打ち直してもこのエラーが出てしまいます。

発生している問題・エラーメッセージ

以下のエラーメッセージが出てしまいました。しかし原因がわかりません。

def parallel(k,j,r0,ep1,ep2,ep3): SyntaxError: invalid syntax

該当のソースコード

PYTHON

1def kjo(k): 2 return math.factorial(k) 3 4def perpen(k,j,r0,ep1,ep2,ep3): 5 return ((ep2-ep1)*(ep1-ep3)*k*kjo(k+j))/((ep2+ep1)*((k+1)*ep1+k*ep3)*kjo(k)*kjo(j)*(2*r0)**(k+j+1) 6 7def parallel(k,j,r0,ep1,ep2,ep3): 8 return ((ep2-ep1)*(ep1 - ep3)*k*kjo(k+j))/((ep2+ep1)*((k+1)*ep1+k*ep3)*kjo(k+1)*kjo(j-1)*(2*r0)**(k+j+1)) 9 10def uhen(ep1,ep2,ep3): 11 return (ep1-ep3)/(2*ep1+ep3) 12 13def funcIMG(r, r0, t): 14 return r*r-4*r*r0*t+4*r0*r0 15 16def funcIMG2(r0, t): 17 return 1+4*r0*r0-4*r0*t 18 19def funcV(m, j, r, t, r0): 20 return funcIMG(r,r0,t)**(-(j+1)/2)*lpmv(m,j,(r*t-2*r0)*funcIMG(r,r0,t)**(-1/2)) 21 22def funcV2(m, j, t, r0): 23 return funcIMG2(r0,t)**(-0.5*(3+j))*(-(1+j)*funcIMG2(r0,t)*lpmv(m,j,(t-2*r0)/sqrt(funcIMG2(r0,t)))-2*(1+j-m)*r0*sqrt(funcIMG2(r0,t))*lpmv(m,j+1,(t-2*r0)/sqrt(funcIMG2(r0,t)))) 24 25def funcW(m, j, r, t, r0): 26 return funcIMG(r,r0,t)**(j/2)*lpmv(m,j,(r*t-2*r0)*funcIMG(r,r0,t)**(-1/2)) 27 28def funcW2(m, j, t, r0): 29 return funcIMG2(r0,t)**(j/2-1)*((j-4*j*r0+2*r0*(t-2*r0))*lpmv(m,j,(t-2*r0)/sqrt(funcIMG2(r0,t)))-2*(1+j-m)*r0*sqrt(funcIMG2(r0,t))*lpmv(m,j+1,(t-2*r0)/sqrt(funcIMG2(r0,t)))) 30 31qq=11 32theta_a = 90 33theta_a = theta_a *pi/180 34r0 = cos(theta_a) 35rr=25 36 37k0=2*pi/WLx 38 39ep1=zeros(NumWLx, dtype=complex) 40ep2=zeros(NumWLx, dtype=complex) 41ep3=zeros(NumWLx, dtype=complex) 42ep4=zeros(NumWLx, dtype=complex)

試したこと

全角になっていないかを何度も確認したり、何回も打ち直してみました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

return ((ep2-ep1)*(ep1-ep3)*k*kjo(k+j))/((ep2+ep1)*((k+1)*ep1+k*ep3)*kjo(k)*kjo(j)*(2*r0)**(k+j+1)にて閉じカッコが足りません。
質問文と書籍のコードが同一であるならば、書籍の誤植だと思われますので、書籍の出版社、著者に問い合わせください。

投稿2020/07/12 05:57

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

abcz

2020/07/12 06:03

少し見にくいのですが def parallel(k,j,r0,ep1,ep2,ep3): return ((ep2-ep1)*(ep1 - ep3)*k*kjo(k+j))/((ep2+ep1)*((k+1)*ep1+k*ep3)*kjo(k+1)*kjo(j-1)*(2*r0)**(k+j+1)) となっており、閉じカッコの数は足りていると思うのですがどうでしょうか?
aokikenichi

2020/07/12 06:05

違います 一つ前のperpenのところです カッコが足りず閉じてないのに次に def 宣言をしているのでエラーが出ています。
can110

2020/07/12 06:06

「(」と「)」の数はそれぞれいくつになりますか?その数は合っていますか?
abcz

2020/07/12 06:09

perpenのところをなおすとエラーがなくなりました。ありがとうございました。
guest

0

can110さんのご指摘の通りですがこの通り直しても
pi, cos 等で NameError: name 'cos' is not defined のエラーが出ます

math.pi
math.cos

等にする必要があるかと思います。

投稿2020/07/12 06:04

編集2020/07/12 06:08
aokikenichi

総合スコア2240

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

abcz

2020/07/12 06:13

すべてのプログラムをここに乗せることができなかったのでこういう形になってしまいました。1番最初に cos などは import しています。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問